For JUnit reporter, exit 1 on failures.
Reconnect even if last connection closed abruptly.

Yeti used to reject connections from browsers that were already
marked as connected. The problem is that sometimes these connections
close abruptly causing legit reconnects to be rejected.

Remove regenerateId logic which is unused anywhere.
Defer events until ready. Better volatile events.

The queueUntil method allows for calls to emit to be stored
instead of sent until the other side sends a particular event.

We previously used queueUntil("listening") during a handshake.
This is a problem because during a reconnect, we may get lots of beat
events that are sent before the connection is completely setup.
We ought to be using queueUntil("ready"), which means the connection
is ready for use, but we had no way to send events without the
queueUntil check.

Additionally, a lot of queued beat events are sent all at once upon
reconnect, which is not ideal. Beat events are volatile and can be
dropped when the connection is not active.

This commit provides two new SimpleEvents methods which are used
by Tempest to correct communication errors observed on Android 4.

 - emitIfConnected: skips queueUntil check and only sends
   the event if currently connected. The event is dropped,
   not queued, if the connection is down. This is used for
   sending beat and listening events.

   Because the listening event can sent without the queueUntil
   check, we can now defer other events like results until
   the connection is properly setup by receiving the ready event.

 - emitNow: sends a message without any checks. Used by
   emit and emitIfConnected.
Report JSON problems in xferObject to console.

Aid debugging to find what's sending a circular reference
to xferObject.
Restart disconnected browsers if possible.

If browsers are managed, restart them if they disconnect.
Allow for inspection of bad xferObject.
Fix bug in Batch.disallowAgentId.

Do not delete the entire whitelist, only delete the specific agentId.
Only show restart failure msg if restart failed.
Set Sauce Labs max-duration to 2 hours.
Wrap uncaught exceptions in a testcase for JUnit.
Prevent calling _launch callback twice.
Script errors should `exit 1` for JUnit.
Merge branch 'restart'
Update README with Features list.