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?)
in which test? I can't find any line that has something like:

.filter('property with space =', 1)
or
.filter('  property with leading and trailing spaces   =', 1)