Make Storable::getId() dail if uninitialized

Adds Storable::hadValidId() (which should (probably) not be public API)
because it was actually used to see if it was updated under the hood.
Add tests for Storable::getId()
Add property access for id (on Storable)

This closes #77.