Do not throw on missing required parameters - console.error instead

I've moved a lot of the request logic from each request into the createAPIRequest function for shared logic. This doesn't affect any logic of the api.

Only logical change made in this commit was that it no longer throws an error when a required parameter is missing. It will return the error in the callback, or print the error to the console using `console.error`.

Callback is now a required parameter.