datastore package port

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
This func doesn't seem to do enough.
At the moment, you're never returning an `ErrConcurrentTransaction` error – so the code doesn't distinguish between abort-now errors and try-again errors. Also, you're always calling `rollback`, even when the function and the following commit have succeeded.