Split constructors and shared fns into individual modules
Rename tests to match src structure
Remove #override from module and added it to appended helper

Also:
* Adds a #restore method
* Smoke tests the results
Deprecate ref.key and snapshot.key

Closes #29