Initial code for ssh keypair two-phase commit for OpenStack. #3682

OpenStack doesn't properly support the client token instance property to
do idempotent calls to RunInstances. We currently rely on that to avoid
double-submiting jobs when a failure occurs. Thus, we need to
re-introduce the use of the ssh keypair as an optional way to check if
an instance was submitted after a failure.

Some issures remain to be sorted out:
Right now, the job attribut IsOpenStack must be set to true and the user
can't provide an existing ssh keypair for this to work properly.
Matching instances to EC2Jobs by ssh keypair needs to be optimized.
If the EC2_VM_START command returns NEED_CHECK_VM_START, we need to
handle that differently for OpenStack.
Enable EC2 code in the gridmanager on Mac and Windows.