Support/refactor request constructor

This came out of the request refactoring #1071
In this PR I refactored the Request constructor, mostly by extracting logic into
separate functions. I also took some initiative to move general helper functions in to the helper file.

Review please: @mikeal @FredKSchott @nylen 
Yea that was the only line I meant, it looks like all the others were pulled into the helper functions (might be worth a triple check, *just* to make sure)