Using cmake for builds.
Refactored to make concepts of store, source, stream, and repository actual base classes with more meaning.
Fixing up the unit tests.
Adding support for snapshot creation in artifact store.  Added default artifact factory for simplicity.