datastore: Introduce Key type

Related to #73 and #39.
What's the reason for making this a pseudo-private property? (Assuming that's what the trailing `_` indicates)