1) Added proper description (plus additional code cleanup) for Virtual Workloads
redis-ycsb and hpcc

2) The functions service_restart_enable, and services_stop_disable were re-written to support
services in Ubuntu and RHEL with multiple different mechanisms (e.g., systemctl, service/rc.d,
service/chkconfig)

3) Improvements on "stats" API call. First of all, the data returned by the API is a JSON
object, instead of a list of lists (much easier to parse and use). Second, the API call
now supports two options: "object_type" (default is "all") and "output" (default is "print").
When calling stats from the API, the user can specify output to be "json" and then he will
just receive back a JSON object. The default value "print" is used by the CLI, where
printing a properly formatted response is important. The second improvement is the capability
to, if allowed by the cloud, to include the number of VMs reported directly by it on the
list of counters for the "VM" object.

4) Implemented a primitive "backoff" algorithm for cases where the instance boot completion
is checked through ssh over a jumphost. After one third of attempts is made, the default
timeout for the ssh (which is half of the value of the "update_frequency" for each VM)
will doubled, being doubled again after two thirds of the attempts are made.

5) Updated automated installer. Now the installer requires the specification of a "role"
("-r", "--role") to the node where it is run (possible values are "orchestrator" and "workload").
The automated installer now takes care of deactivating firewalld, iptables and ipfw on
workload VMs.

6) Refactoring on the core "operations" code. a) Now, a particular instantiation
of a cloud operations class, for a given user and experiment identifier is stored on
shared dictionary. This will ensure that this instantiation can be re-utilized across
multiple operations, reducing the need for repeated dynamic module imports. b) A new
shared variable, "expid", caches the result of query to the "time" global object on the
Object Store. This means a reduced number of queries across multiple operations.

7) Support for PubSub through both CLI and API, including setting of timeouts for
subscribers. The command "msgpub VM mychannel mymessage" (the API equivalent is
api.msgpub("TESTSIMCLOUD", "VM", "mychannel", "mymessage")) will publish the message "mymessage"
on the channel "VM:mychannel". The command "waiton VM  mychannel mymessage 120" (the API
equivalent is api.waiton("TESTSIMCLOUD", "VM", "mychannel", "mymessage", 120)) will cause
the CLI/API client to block waiting for the message "mymessage" to be publish on the channel
"VM:mychannel" with a timeout of 120 seconds.

8) A new VM attribute, "comments", is now automatically stored on the Metric Store. This
is very handy if, during an experiment, an user wishes to "annotate" certain VMs for later
analysis.

9) In OpenStack clouds, extract the total time to complete the provisioning request directly
from nova API, instead of relying on the value determined by CB (e.g., through polling).
Since the total time reported by CB and by nova API differ, the actual time spent by CB
waiting for the provisioning request to complete is added to VM's "comments" attribute.
Bugfix for the CB API call "stats" when used against an OpenStack cloud.