Fix race condition.

`Oasis.connect('capability').then( handlerfn );` had a race condition if the
sandbox already had the ports.  The call to `port.start` needed to happen after
the connection promise was resolved.

Yet another problem solved by `RSVP.resolve`.

Also don't start ports twice in consumers case.
Do not try to self-connect.

This helps with loading oasis in phantomjs, although not completely.
Do not attempt to connect at all in PhantomJS.
`undefined` request values are treated as errors.
Up saucelabs timeout to 3 minutes.

Some test runs are taking ~ 1..2 minutes.
Wrap event handlers.

Users may specify their own event handler wrappers via:
```js
Oasis.configure('eventHandler', function (callback) { callback(); });
```

https://trello.com/card/add-the-ability-to-wrap-message-events-in-oasis-so-that-when-using-it-with-ember-we-can-wrap-them-in-a-run-loop/51a8c7c06d8a1a70030000dc/19
Try to make race errors clearer.
Upgrade RSVP.

Now we can drop try/catch in promise constructors.
Minor tweak.