Return request object and fix the sync option

To be able to abort requests, we need access to the request object. This is easily achieved by returning it.

While testing this, I found a bug with the `sync` option. The `open` method expects a boolean value for `async` but uxhr currently passes a value for its `sync` option which obviously works the other way round so we need to negate it first.