datastore package port, fixed pull request

Initial port from the appengine/datastore package, adapted to work with the v1 API

Major changes:
* A specific Client interface is used instead of appengine.Context
* The Multiple parameter in properties has been removed, this is now autodetected
* appengine specific types were moved into the datastore package (GeoPoint, BlobKey)
* Direct support for GeoPoints was removed as it's not supported by the v1 API, they're now serialized like every other struct
serialized like every other struct
As far as I can understand from the appengine package and the App Engine people, BlobKey exists for the sole purpose of having a common key type for blobs across the runtime libraries, and the Datastore API supports it for some compatibility reasons.

In the cloud/storage package, blobs are identified by string values. So in order to avoid boxing/unboxing, I'd like handle BlobKeyValues as a string.

This package should set a string field whether a StringValue or a BlobKeyValue is set.