Wait indefinitely when launching slave agent with a timeout of zero

Summary:
The docs claim that a timeout of zero means forever, but sometimes it
turns out to really mean zero. We correct that here.

Test Plan:
Ran the new code on our Jenkins installation, saw that we didn't get the
timeout message where Jenkins waits for only about 5 seconds before
claiming that it failed to launch the slave agent.

Reviewers: csilvers

Reviewed By: csilvers

Differential Revision: http://phabricator.khanacademy.org/D10554
More logging when we decide to time out a slave.

Summary:
They're timing out much more often than I'd expect -- even when we're
doing back-to-back deploys they are timing out.  Not sure why.  I am
hoping this logging will shed some light.

Test Plan: Fingers crossed.

Reviewers: chris

Reviewed By: chris

Differential Revision: http://phabricator.khanacademy.org/D11464
Restart slave.jar when it dies.

Summary:
Sometimes slave.jar dies due to an OOM error or the like.  In those
cases, make it automatically restart.  Jenkins doesn't notice that
slaves are dead in order to restart it themselves.

Test Plan:
Fingers crossed.  I'll install this on jenkins, terminate all the
jenkins-slave machines on ec2, and run make-allcheck, and make sure
the slaves start up properly.  I don't know what
com.trilead.ssh2.Connection.execCommand does, but it looks like it
just runs the given command in the shell, based on code example #6 at
   http://www.programcreek.com/java-api-examples/index.php?api=com.trilead.ssh2.Session
   >>> sess.execCommand("uname -a && date && uptime && who");

Reviewers: jlfwong

Reviewed By: jlfwong

Subscribers: chris

Differential Revision: http://phabricator.khanacademy.org/D14010
Merge branch 'master' of http://github.com/jenkinsci/ec2-plugin

Conflicts:
	src/main/java/hudson/plugins/ec2/EC2RetentionStrategy.java
Merge pull request #122 from Khan/master

Respect timeout=0 when launching slave agent, and restart slave when it dies.