Refactor internal Uri implementation class construction.

Tidy up the Uri construction internals, as discussed on #406.