Enable changing Ajax settings in `beforeSend` callback

Previously one could only affect these settings:
- `timeout`
- POST `data` (as an already serialized string)

Now you can affect these settings as well:
- `url`
- `type`
- `headers`

However you still can't manipulate `data` as a hash even if it was
originally passed as one. This is by design and for jQuery
compatibility.

Fixes #499