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

This is by no means completely tested yet, I need to run a lot of tests with the local devserver, and then with the live servers as well. It's however a good start, and I'd like to start gathering feedback on the API and the internals.
Yes, GetAll and GetMulti are different. We've consistently used "Multi" to refer to batch versions of the APIs (in datastore, but also in taskqueue, in memcache, etc.), of which this is an example. GetAll is used to retrieve all the results of a query, and you don't know in advance the size of the result set.