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?)
A more performant fix (and one which removes any order dependency) would be to use 'expression.rsplit(" ", 1)' to pick off the trailing token, and then use it to index into the OPERATORS as a mapping.

If no operator is found, do we just assume an equality test for the expression-as-fieldname?