Add a very basic ShipPropertyFilter.
Add more operators to ShipPropertyFilter.
Allow nested property spec.
Add OPERATOR_NOT_EQUAL for completeness.
Add more tests for get_property_value, including nested property.
Add a skeletal implementation of ShipPredicate with ShipPropertyFilter.
Add NOT condition to ShipPredicate.
Add OR conditions.
Add AND conditions.
Fix the name resolution bug in jsonobject.JSONSerializableObject.parse(). Now
the JSON name is respected when parsing to Python object. This is vital for
mapping a variable like "or_" in Python to "or" in JSON and parsing it back.
Add a test for a realistic example of ShipPredicate.