Makes operator checking deterministic in Query.filter.

The order of dictionary keys is not guaranteed between runs of
code so `expression`s ending in '>=' or '<=' were sometimes
matching for '='.

@pcostell the issue with flakiness was non-deterministic behavior of Python internals. Yay for finding the bug!

This was holding up #281, but it also forced us to use ancestor queries, which is a good thing.

@tseaver This is the quick-and-dirtiest way to fix this issue but I am a fan of changing from
```python
query.filter('foo >=', 10)
```
to
```python
query.filter('foo', '>=', 10)
```
WDYT?

Also @jgeewax WDYT since your original design. (Maybe you had reasons for combination property name and operator?)
Sorry I didn't realize until reading your other comment that leading/trailing spaces were allowed / to be considered.