Sorted the team names (in some order).

Now should be able to run submissions in a deterministic order.
Fixed issue with iterating over jobs for grading.

Changed to _actually_ do a round-robin approach, satisfies the
following conditions.

  1. After checking whether a job has printed 'FinalRank' or has
     finished (once), we move onto a different team.

  2. If an exception is raised due to throttling while doing the
     aforementioned checks, then we retry with the same team.

Also, made it so that if an exception occurs, e.g. when trying to
parse the 'FinalRank' results of submission, then we record the
submission as invalid.
Fixed issue with kill command.

The `team_id` was not being assign if had specified the command via
the job identifier.
Made listing jobs more sophisticated.

Now displays more information about the job itself.
Cached job description to avoid hitting Amazon APIs.

Should now be able to avoid throttling in more situations because a
description for the jobflow is request once and then computed from.

Also fixed issue with popping off the the last team of the list would
leave `i` as an invalid index.
Eliminated an unnecessary try/except clause.

Moved handling the `KeyboardInterrupt` exception into the loop, and
just break when interrupted.
Changed to require more confirmation for exit.

Must press ctrl-c twice sequentially for the program to terminate.
This was inspired by the way node process works.

Also fixed an incompatibility with Python 3 due to raw_input vs input.
Made another attempt to avoid throttling.

The "list jobs" command makes only a SINGLE request in order to
retrieve the jobflow information of ALL the currently running jobs.

Kind of a hack to get the EMR connection from one of the jobs...
Fixed issues with cached jobflow description.
Fixed issue where key did not exist.

Also made it so that the last process step iteration number is only
updated after checking the contents of the keys (in case an exception
occurs).
Changed to add all steps to the job at once.

Dramatically reduces the amount of time necessary to spawn each of
the various submissions on Amazon.
Improved performance of computing penalty.

Transform the solutions from a list into a dictionary that maps the
node identifier to its rank. Then, we have an easy lookup from using
the user-supplied rankings.