Add support for using extensions

This patch registers an extension in vCenter. This enables a third
party, for example OpenStack, to mark that it is responsible for a
resource.

If an administrator tries to update the VM via vCenter then they will
get the following message:

"Solution OpenStack manages the selected virtual machine. You should
not modify the virtual machine directly. Use the management console of
the solution to make changes. Do you want to proceed?"

The following API's have been added:
 - find_extension - checks if a specific extension exists
 - register_extension - registers a new extension

Note that the onus is on the caller to validate that the extension exists.
If not they should handle the exception returned from the backend.

The pseudo code should be as follows:

    if not find_extension(key):
        register_extension(...)

Change-Id: I634b84da8bf32fab6152af3c84ed1bb8c52251af
Merge "Add support for using extensions"