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.