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.
Merge pull request #27 from tildeio/fix-self-connect

Make things better.
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.
Merge pull request #26 from tildeio/wrap-postmessage

Wrap event handlers.
Upgrade RSVP.

Now we can drop try/catch in promise constructors.
Merge pull request #28 from tildeio/upgrade-rsvp

Upgrade RSVP.
Minor tweak.
Minor tweaks.
Merge pull request #29 from tildeio/minor-tweaks

Minor tweaks.
Save ports in `sandbox.ports` by capability name.

- Ports are usable after the sandbox promise resolves.
- Transfered ports are not saved in this way.
Kill dead code.
Merge pull request #30 from tildeio/auto-save-ports

Save ports in `sandbox.ports`.