Add support for the DatastoreURL object

The DatastoreURL object represents a URL that can be used to access
a file in a datastore through HTTP(S).

The object comes with several methods that makes the manipulation of
datastore URLs much simpler.

This is needed by Glance and Nova.

Change-Id: I6647ef0acb6afa2cacbe81c3fde2db0453c596ca