Implement API to get driver properties

Implement GET /v1/drivers/<driver>/properties that returns a
dictionary of (driver_info) properties of the specified driver.
Each entry in the dictionary is:
  key: name of the property
  value: description of the property

An invalid driver name results in an HTTP 404.

Eg: 'GET /v1/drivers/pxe_ipminative/properties' returns:
{"pxe_deploy_ramdisk": "UUID ... of the ramdisk... Required.",
 "ipmi_username": "IPMI username. Required.",
 "ipmi_address": "IP of the node's BMC. Required.",
 "ipmi_password": "IPMI password. Required.",
 "pxe_deploy_kernel": "UUID ... of the deployment kernel. Required."
}

If the properties for a driver are not cached, the API service makes
an RPC request to a conductor to get the properties for that driver.
It then caches that information for subsequent requests of that driver.

Change-Id: I9c98f4369c54a7cdf9e20ea87348e61f7af10303
Blueprint: get-required-driver-info
Partial-Bug: #1261915
Merge "Implement API to get driver properties"