Export NewRequest outside the package
Move payload serializer inside the NewRequest

There are still a few inconsistencies in our API. The convention "if payload is here, serialize it" is more appropriate.
Use a bytes.Buffer instead of bytes.Reader 

bytes.Buffer is more flexible in this case since it allows the same instance to be modified.
Move the JSON deserialization inside the sendRequest

In this way it will be available to any HTTP request. I also want to propagate the original response, given in some cases we need additional investigation.

At this point, I'm not sure whether the .get/.post helpers make sense anymore.

Another issue I will need to attack is Error handling. Right now in some cases the library checks for 200, in other cases for 400.

I probably need to make the check more generic.
Make .get, .post, .put, .delete simple convenient helper

By returning the whole response, I can delegate more API calls to those helpers. Moreover, I can return the response to the caller for further investigations.
Split SetAutoRenewal into two separate functions to reflect the API

I kept the SetAutoRenewal as a convenient helper.