CDK-472: Add Datasets.URIBuilder

Adds an API for programatic building of Dataset/View URIs.

URIPattern implementation uses LinkedHashMap to preserve order of
options such that pattern.construct() will produce query params in a
predictable order.
We don't usually leave blank lines in the import statements