begin work on artifact management
new artifact store. the next step is to introduce the second ephemeral system parameter. Then the `changed` method would move to a separate trait perhaps, so that we can conveniently keep `ArtifactStore[S]` around, while having `ArtifactStore.Node[S, D]` for the occasions where it must be observed?