fixed a bug in Get where the object wasn't being populated from memory correctly
getStructKey needs to return an incomplete key for Put requests, so instead added a parameter to extractKeys in order to determine if incomplete keys were okay or not.  Doing a Get
request on an incomplete key is what results in the datastore error "datastore: internal error: server returned the wrong number of entities"
added more unit tests which is where these errors were caught