CDK-317: Fix HCatalog URIs.

This updates URIPattern to catch the case where a URI pattern does not
have a path but the tested URI does, and fail the URI. This allows the
HCatalog URIs to separately handle URIs without a path (Managed) and
URIs with a path (External) while still allowing the user to override
the authority information, host/port.

Previously, the HCatalog URIs used the root path, /, to signal that
the URI was for a managed HCatalog repository rather than an external
one. This is no longer necessary because the update to URIPattern and
any non-null path now returns an external repo.
Add projectStrict to FieldPartitioners and add tests.

FieldPartitioner#projectStrict is like project, but it returns a
Predicate that accepts a partition value only if the original predicate
would accept all source values that produce the partition value. This is
the "strict" analog of the project method, which accepts a partition
value if there exists a source value that would have been accepted that
produces it.

This also adds more thorough tests for project and projectStrict, as
well as some bug fixes.
Update FS implementation to minimize entity constraints.
If no constraints, use Predicates.alwaysTrue.