cluster: load volume settings from master userdata

Updated load_receipt to catch MasterDoesNotExist and check for spot
requests before reraising. If spot requests are found load_receipt will
wait for the spot requests to activate, then for instances to activate,
and then attempt to refetch the master node. This properly handles the
case where you start an *all* spot cluster and cancel the start command
early on before any instances come up and then rerun the start command
with the --no-create (-x) option. In this case the code needs to wait
for the master to 'appear' before attempting to load the original
cluster settings.

closes gh-179
add --force option to terminate/stop commands

This option must be used whenever there are issues loading cluster
settings either due to an incompatible cluster or some other unknown
error.
cluster: consolidate exception handling in load_receipt

Cluster.load_receipt was performing duplicate try/catches for cluster
settings, plugins, and volumes. Moved all core load_receipt code within
a top-level try/catch block.
cluster: raise ValueError in get_tag_from_sg

Raised whenever the StarCluster security group name is invalid.
Fixed dce file execution permission
nodes back to 1 slot
cluster: improve exception handling in load_receipt

Raise IncompatibleCluster error on *any* uncaught exception in
Cluster.load_receipt. The full stack trace will always be logged in this
case. MasterDoesNotExist and PluginError are always reraised.
travis: enable notifications for #starcluster IRC
cluster: improve keypair fetching in get_cluster

Updated ClusterManager.get_cluster() to attempt to fetch the cluster's
keypair name from the master node in the case that cl.keyname is None
due to load_receipt=False or some other failure loading cluster
metadata.
sshmaster: fetch cluster key directly from node

Updated the sshmaster command to skip loading cluster metadata and
simply load the cluster keypair based on the master node's instance
metdata. The keypair name is the only cluster metadata used by sshmaster
so it's less API calls to just fetch this info from the instance metdata
direclty.
sshnode: fetch cluster key directly from node

Updated the sshnode command to skip loading cluster metadata and simply
load the cluster keypair based on the node's instance metdata. The
keypair name is the only cluster metadata used by sshnode so it's less
API calls to just fetch this info from the node's instance metdata
directly. This is also necessary in order to login to clusters with no
master node (e.g. volumecreator clusters) given that it completely
avoids attempting to fetch any cluster metadata from the master node.
commands: reraise ClusterDoesNotExist in stop/terminate
listclusters: minor output formatting fix

Add new line after displaying an IncompatibleCluster exception message.
minor docstring updates
ipcluster: stop spinner in a finally clause
ipcluster: sleep 5 seconds when waiting for JSON

Updated from checking every 1 second to now every 5 seconds. Theres no
need to check every second given that SGE doesnt queue and run jobs that
quickly which the ipcluster plugin currently relies on.
node: minor fix to Node.parent_cluster property

Return None instead of '--UNKNOWN--' string (not sure what I was
thinking :P) in the case that the node's parent cluster could not be
determined.
node: minor InstanceNotRunning msg formatting fix

Update the instance_id and label args passed to InstanceNotRunning in
node.shell() in the case the node is the master node. This makes the
error message read slightly better in the case of the master:

!!! ERROR - master node is not running (stopped)

instead of:

!!! ERROR - node master is not running (stopped)
node: raise IncompatibleCluster on userdata failure

Userdata should only fail to parse if the node was not created with
StarCluster or created with an incompatible version of StarCluster.
Updated Node.user_data property to raise the appropriate exceptions in
both cases.
Merged with trunk