added support for a data property and custom headers

You can now either read your data from .path, or supply it in .data, of the file object.
There is also support to pass on extra headers into options.headers, so only content-type and content-length will be updated with the correct values.