Added custom config parser that ignores inline comments started with a pound sign.
cluster: change plugins kwarg to list of plugin objs

Previously the plugin kwarg was tied to the config and the actual plugin
loading would happen at runtime by Cluster. This meant that anyone using
StarCluster as a library would have to pass a list of plugin metadata
rather than just creating a list of plugin objects. This caused an
unnecessary coupling between Cluster and StarClusterConfig.

Changed the plugins kwarg to accept a list of plugin objects. The code
will also check for the previous format and if detected will raise a
deprecation warning and load using the old convention. Moved
load_plugins code to deathrow module. In a future release it should be
merged into StarClusterConfig._load_plugins and support for the old
format via Cluster should be removed.
cluster: dont catch ctl-c when running plugins
commands: clean-up ctrl-c handling for all commands

Replaced convoluted handling of ctrl-c via signals in StarCluster
commands with simple try/catch blocks for the KeyboardInterrupt
exception.
cli: enable config debug logs when using --debug
utils: add debug kwarg to get_arg_spec
config: pass DEBUG_CONFIG to utils.get_arg_spec
add support for new m3 instance types
docs: fix ipython notebook docs link
update StarCluster web links project-wide

web.mit.edu->star.mit.edu
setup: bump paramiko to latest 1.9.0 version

Fix incorrect version for boto in requirements.txt
awsutils: fix minor bugs in wait_for_snapshot

Fixed issue where progress bar could potentially be updated after it's
finished. In this case the progress bar was being displayed on two lines
vs the usual single line.

Prevent unnecessary time.sleep after an update where snap.status ==
'completed'. This speeds things up by a refresh_interval.
awsutils: add wait_for_volume util

Takes a volume and waits for either its status or state to change to a
given value. If both a status and state are given it waits for both
transitions one after the other.
awsutils: add info msg to create_volume

Displays size, zone, and snapshot_id (if any) of the volume being
created.

Moved the info message used in volume.py to awsutils.py
volume: use ec2.wait_for_volume everywhere

Consolidated cleanup code used by both create and resize to delete the
generated volume in case of failure.
volume: cleanup vol on failure in resize()
volume: warn about volume hosts in finally block

Now that we're on Python 2.6+ its better to use the finally block to
handle warning users about lingering volume hosts which will always be
called even in the case an exception occurs.
volume: log execution time for resize()
volume: move snapshot clean-up to finally block

Any snapshots created during resize should be removed in both the case
that the volume was successfully resized and in the case that an error
occured. Created wrapper function _create_snapshot that caches the
intermediate snapshot so that it can easily be removed later within the
finally block.
volume: fix bug in _warn_about_volume_hosts

This method wasn't handling the case where the user specifies their own
volume host instance to use and instead only checked for hosts
automaticaly launched by create/resize. Updated the code to warn about
any instances autogenerated by create/resize, if any, as well as any
instance specified by the user.