Refactor out data handling from the request method

Obtrusively setting data to null for other than POST requests
Send data on URL in GET requests
Improve feature test so it tests for the namespace also
Add workaround for urls with existing query parameters
Refactor away duplication in tests
Add call to setRequestHeader

This should be (and is) done after open but before send.
Currently, the implementation expects the Accept header attribute and no other.
Call setRequestHeader with all header values in request
Set headers before setting the onreadystatechange method
Shorten setRequestHeader call assertion test
Use headers instead of header as option attribute name

To improve semantic correctness since it's a list.
This enables us to use the variable name header instead of key without confusion in the loop.