Adding new API: Capabilities

This backend API tells the caller about the current capabilities
of the Ginger plug-in, making it possible to the UI (or any other
caller) avoid using features/APIs that aren't suitable for the
current host Ginger is running in.

The API model is created by using an array of objects which represents
Ginger features, usually an array of Collection or Resource subclass
instances. For each element, we verify if a method called
'is_feature_available' is implemented. In that case, the availability
of the feature is determined by it. Otherwise, we assume that the feature
is always available. This makes the method optional for each feature to
implement.

Example of output:

$ curl -u danielhb -H "Content-Type: application/json" -H "Accept: application/json" http://localhost:8010/plugins/ginger/capabilities -X GET
Enter host password for user 'danielhb':
{
"PowerProfiles":false,
"Network":true,
"Sep":true,
"SanAdapters":true,
"Firmware":false,
"Sensors":false,
"Backup":true,
"Users":true
}

Signed-off-by: Daniel Henrique Barboza <danielhb@linux.vnet.ibm.com>
Adding capabilities API to Makefiles

This patch adds the file models/capabilities.py and
controls/capabilities.py to the automake config files.

Signed-off-by: Daniel Henrique Barboza <danielhb@linux.vnet.ibm.com>
Capabilities API: adding support to some existing models

models/firmware.py: added an implementation of is_feature_available()

models/sensors.py: added an implementation of is_feature_available()

models/users.py: changed to the new Python class format

models/powermanagement.py: changed to the new Python class format and
added an implementation of is_feature_available()

Signed-off-by: Daniel Henrique Barboza <danielhb@linux.vnet.ibm.com>