Add per-request options

cc @shalecraig 
Can we put this stuff in its own method? Not sure what to name it -- just think it needs a bit more clarity. Maybe separate methods like: `getDataFromArgs`, `getAuthFromArgs`, `getHeadersFromArgs`? I imagine some of the branching would be duplicated between these methods but I think it'd be worth it for the gain in clarity. Thoughts?