cluster: log userdata size in kb to debug file
cluster: improve userdata validation

Previously validate_userdata() was only validating the case where all
nodes are flat rate and use the same AMI and instance type. In this case
all node aliases are included in the userdata. As far as userdata *size*
is considered this is a worst case scenario. This is not a precise
calculation for all cluster configurations in general given that some
Cluster configurations (e.g. spot or multi instance type) will not
necessarily store all aliases in every node's userdata.

Updated the userdata validation to determine the maximum number of
aliases that might be stored in any given node's userdata for a given
cluster configuration (ie spot vs flat-rate vs multi-instance type)
before validating the userdata size.
cluster: initial fix for thread leak

Addresses #177 by creating a single copy of the default plugins
rather than creating a new instance each time the defaults are needed.
This avoids piling up threadpools over time in applications such as the
loadbalancer which call addnode and removenode many times over a long
period.
cluster: move default plugin handling to run_plugins

Consolidated all default plugin handling into the run_plugins method.
This reduces code and simplifies things by allowing a single run_plugins
call to run *all* of the plugins, both the default and user-specified
plugins, without the caller needing to handle the defaults separately
each time.
Merge branch 'fix-177' into develop

closes gh-177
cluster: load volumes into AttributeDict
cluster: minor log message update

Change 'Setting up the cluster' to 'Configuring cluster'
cluster: decorate default plugins with @property

Forgot to convert Cluster._default_plugin and Cluster._sge_plugin
functions into class properties.
terminate: add force=True when terminating manually
add support for hs1.8xlarge instance type
cluster: fix bug in validate_userdata for spot clusters

Cluster._get_cluster_userdata requires a list of aliases.
sshutils: shutdown all connections before exiting

Register each SSHClient object's close() method with the atexit module.
This *should* close any open SSH connections on interpreter shutdown and
in theory prevent the dreaded "Exception in thread Thread-21 (most
likely raised during interpreter shutdown)" error with paramiko.

closes gh-135
awsutils: refetch group before calling authorize

In some cases operating on a security group object immediately after
it's been created returns a DNE error due to a race condition in the EC2
API back-end. Updated EasyEC2.create_group to avoid this issue by
waiting until the new group can successfully be refetched via
EasyEC2.get_group_or_none before calling authorize() or returning the
new group to the caller.

closes gh-189
closes gh-190
Merge branch 'pr/176' into develop

closes gh-175
closes gh-176
awsutils: fix 'placement group DNE' errors

In some cases fetching the placement group object immediately after
it's been created returns a DNE error due to a race condition in the EC2
API back-end. Updated EasyEC2.create_placement_group to avoid this issue
by waiting until the new placement group can successfully be refetched
via EasyEC2.get_placement_group_or_none before returning the new
placement group to the caller.

closes gh-161
cluster: fix bug in runplugin command

Fix plugin loading in ClusterManager.run_plugin

closes gh-195
requirements: bump decorator version to 3.4
Merged with trunk