element.py: Instantiate the Artifact objects within update_state()
The Artifact instance within Element is now initialised when the relevant keys are available, with the weak & strong keys being in the constructor. It also introduces the notion of a strict_artifact, which is used to make a distinction of the Artifact keys and cached state dependant on the context defined strictness. The keys are updated when a relevant key change occurs. As the keys are now internalised within Artifact, the majority of key determinsim and parameterisation in public Artifact method calls are now redundant.
Showing with 83 additions and 109 deletions