Moves request building logic to a public method to help with testing

This is probably just cleaner in general, so double bonus!
Replaces the callbacks test file with a new buildRequest test suite

This is much easier to verify now that we don't have to worry about AJAX requests