Important (and big) commit

1) While checking for VM boot completion by running a passwordless ssh command going through
the JUMP_HOST, make sure that the ssh command includes the -o ConnectTimeout. Without this
option, the first time the ssh command is attempted through the JUMP_HOST will cause it to
block until the connection times out (since the VM might not have been even created yet),
which is normally set to 120s. Now the ConnectTimeout will be set to half of the time
specified in the VM's attribute "update_frequency".

2) In case any of the methods used to check if a VM is ready/started (to boot) or to check
if the VM completed its boot takes longer than the VM's attribute "update_frequency" to
return from the polling attempt, log a warning message informing the user of this fact.
This was prompted by the scenario described on item 1) (i.e., an ssh timeout that is much,
much longer the "update_frequency").

3) CB now has rudimentary support for SLA tracking. Great care was taken to make sure that
this new capability is non-intrusive to users that prefer to have their SLA tracking done
from the outside. Two kinds of SLA tracking are possible, provisioning and runtime.
If a VM is deployed with the attribute "sla_provisioning_target" set, then CB will check,
at the end of the provisioning, if the total time taken to provision is smaller than the
specified value. It then adds a new attribute - "sla_provisioning" - with values "ok" or "violated"
to the VM. In addition to it, CB will also add the VM to a "view" (i.e., a list of objects
that share a common attribute) that can be queried at any time.
Example for SLA provisioning
The command "aiattach nullworkload tinyvm_sla_provisioning_target=5" (the API equivalent of
this command is "api.appattach("TESTSIMCLOUD", "nullworkload", temp_attr_list="tinyvm_sla_provisioning_target=1")
") will cause CB to automatically check if the total provisioning time is smaller than 5,
and then place the VM on a list of VMs with violated or obeyed SLA provisioning. These
lists (also known as "views" internally by CB) can be accessed by the command viewshow.
A list of VMs who violated the provisioning SLA can be obtained with "viewshow vm sla_provisioning violated",
while a list of VMs who fulfilled the SLA can be with "viewshow vm sla_provisioning ok".
The API equivalent of these commands is "api.viewshow("TESTSIMCLOUD", "VM", "SLA_PROVISIONING", "OK")".
Example for SLA runtime
The command "aiattach nullworkload sla_runtime_target_bandwidth=100-gt" will cause CB to
automatically check if the reported application bandwidth is smaller than 100 (that is
controlled by "gt" or "greater than" and "lt"  or "less than"), and then place the VM on a
list of VMs with violated or obeyed SLA runtime. These lists (also known as "views"
internally by CB) can be accessed by the command viewshow. A list of VMs who violated the
SLA can be obtained with "viewshow vm sla_runtime violated", while its a list of VMs who
fulfilled the SLA can be with "viewshow vm sla_runtime ok". The API equivalent of these
commands is "api.viewshow("TESTSIMCLOUD", "VM", "SLA_RUNTIME", "OK")".