Add support for transport plugins

This patch introduces support for registering additional transport plugins, thus making it possible to override how Raven pushes data into Sentry.

New transports are added using `Raven.registerTransport(protocol, handler).` where `handler` is an object implementing the signature `{ setup: function(dsn, triggerEvent), send: function(data, endpoint) }`.

What transport is used is figured out by parsing the DSN passed into `Raven.config`.

This patch also introduces a `V8Transport` which uses CORS to push data into Raven via XHR.

Further discussion can be found here: https://github.com/getsentry/raven-js/issues/157
I'd make pass optional for people who just want http.

```javascript
var qs = [
    'sentry_version=4',
    'sentry_client=raven-js/' + Raven.VERSION,
    'sentry_key=' + this.dsn.user
];
if (this.dsn.pass) {
    qs.push('sentry_secret=' + this.dsn.pass);
}
```