Add class URI to parse the backend spec string

The URI identifier is well specified and commonly used in lots
of places, so we can use this to identify the location of the
given backend.

The most important benefit of using URI is its ability to refer
to resources on different machines, such as:
protocol://host.name.server.1:port1/path/to/some/dir
protocol://host.name.server.2:port2/path/to/some/dir