CDK-501: Remove inf from unbounded ranges.

This implements Tom's suggestion to use the empty string to signal a
missing bound rather than "inf". This only collides with String bounds,
where the empty string is a valid bound. But, the only behavioral
difference is that the empty string itself is included in the range and
it is no longer possible to express a from-after in terms of the empty
string or the range upTo("").
CDK-501: Add more view URI tests.

This uses local file dataset URIs to test, but the test applies to any
implementation that uses AbstractRefinableView. Introducing a test
dataset, view, repository, and URI pattern to make this slightly more
generic wasn't worth the work.

This fixes URIBuilder; when constraints are empty, the URI should be a
dataset URI. Also fixes AbstractDataset, which should implement equals
and hashCode to make these tests work.