Expand values in URI templates when generating requests

Merging of values into URI templates when generating requests. Also
supports merging in {scheme} and {server}.

I started this because Swagger supports multiple schemes (e.g. http, https)
on the same service. I figure that rather than having multiple URI Templates,
the easiest way to deal with this is to make the scheme a variable so we can
extract/expand or validate it when required.