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.
Upgrade RSVP.

This will allow us to drop try/catch in promise constructors.
`undefined` request values are treated as errors.