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.
Should mention that this is a dataset or view URI that can be used with the Datasets.* methods