Unbundle iptools, use iptools 0.6.1
setup: bump paramiko and boto to latest versions
balancer: move static settings to __init__
balancer: add JAT_start_time to default qstat fields
balancer: collect all queue info from qstat

Updated SGEStats to collect all queue info in a self.queues list.
balancer: get slot calculations from all.q

Updated SGEStats.count_total_slots and slots_per_host to use the slot
info from all.q rather than naively relying on # slots == # cpus
reported from qhost.
balancer: take slots into account in _eval_add_node

closes gh-69
closes gh-164
balancer: improve qstat parsing

* Updated SGEStats.parse_qstat to parse qstat xml generically without
  requiring a static list of xml fields

* SGEStats.parse_qstat now adds the currently allocated queue to the job
  dict for running jobs

* Refactor job_multipy to _count_tasks and update to properly count the
  number of tasks in all possible job arrays.

* Use qstat's -r option to get full resource requirements for jobs in
  the xml output.
balancer: handle qacct error on fresh SGE install

On a fresh SGE install where no jobs have yet been submitted you get an
error about a missing accounting file. This error goes away as soon as
someone qsub's a job. Updated the code to catch this error and check
whether the accounting file is missing. If it is then the error is
ignored otherwise the error is raised.
balancer: fix node count in _eval_remove_node

Get the number of cluster nodes from the cluster object rather than
relying on qhost. qhost only shows execution hosts in the cluster so if
any nodes are not an exec host (e.g. master) using qhost for a node
count is not accurate.
balancer: update sge tests for latest parser changes

The parser now uses 'qstat -f -r -xml' which produces more detailed
output than before including details about each SGE queue. Updated the
SGE load balancer test templates to match the expected output from
'qstat -f -r -xml'.

The total slot count and slots per host counts now come from qstat
rather than qhost given that slots are queue-specific and are not 1-1
with # of cpus on an exec host. Moved the assertions around total slot
count and slots per host into the qstat tests.
Merge branch 'loadbal-slot-calc-fix' into develop
When jobs are in the queue and no slots exists, immediately add a node
Merge pull request #260 from datacratic/quick_add_node_when_none

When jobs are in the queue and no slots exists, immediately add a node
FIX: only clean-up placement groups in supported regions

Trying to use *any* AWS API call related to placement groups in regions
that do not support placement groups fails with an UnsupportedOperation
error (including DescribePlacementGroup). Updated
Cluster.terminate_cluster to check whether the cluster's region supports
placement groups first before attempting to fetch and clean-up the
cluster's placement group (if any).

closes gh-261
ebsimage: fetch root device from instance metadata

Fetch the real root device from instance metadata server rather than
assuming '/dev/sda1' which is what the root device *should* be but isn't
always the case unfortunately

closes gh-258
minor import cleanup

Imports should be in order 1) stdlib 2) 3rd party 3) internal
shell: auto-import pyasn1 and iptools modules
Merge branch 'unbundle-iptools' into develop

closes gh-246
node: fix Node.root_device_name for misconfigured AMIs

Apparently EC2 AMIs are allowed to specify a root device name that is
*not* in the image's block device mapping and amazingly they're not only
allowed to be created but they also *work* by some magic in the EC2
backend. Any instance started with a misconfigured AMI also reports the
same root device name that is *not* in the instance's block device
mapping. This was causing the real root device to be recognized as an
external EBS volume when calling Node.detach_external_volumes().

For example: CentOS 6.4 (Marketplace AMI) ami-bf5021d6

This patch to the Node.root_device_name attribute first checks that the
root device name returned by EC2 is actually in the instance's block
device mapping before returning. If it's not it attempts to fetch the
*real* root device from the instance's local metadata server assuming
the instance is running and SSH is up. If SSH isnt up the code looks for
common mistakes like /dev/sda1->/dev/sda and 'assumes' a root device if
possible.

closes gh-238