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
You dont need a separate Client implementation for transactions. Client can have a transaction []byte field, and it can be a zero value for the non-transactional case.