CDK-456: Add partition constraints

This updates the Constraints class to use a PartitionStrategy so that it can handle constraints against partition fields. SchemaUtil is also extended with some functionality from the HBase implementation, which will also be used by the CLI in #115, CDK-488.

Also, this should have better performance because it uses the partition strategy to prepare the constraints in the key and entity predicates so there aren't any lookups when they are applied.
Is there a reason ConstraintsSerialization can't write out the strategy, rather than do it here? Same question with the schema.