Implements group_by, projection and offset on datastore Query.

In addition, `__eq__` was implemented on datastore.key.Key to allow for easy comparison.

See #281 for some context. As mentioned there, I looked and didn't see any equivalent bugs for these features.
Neither '_cursor' nor '_namespace' are mutable, so returning them directly is safe.

Neither is stored on the query's protobuf, either ('_cursor' is remembered from the last response's protobuf, while '_namespace' is just passed to 'Connection.run_query()'.