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.
Should we be returning the mutable instance values, or a copy?  Same question for '_group_by'.  Maybe we should avoid storing it, and just compute it from the self._pb?