Update InternalBackend API to support request modification.

This splits out the Call logic in InternalBackend into two separate methods --
NewRequest and Do. This makes it possible to extend the current backend to
modify requests before sending them (e.g. to add a header). This does not
change the Call interface that custom backends must implement.

I can see this being decently useful for people who want to implement
e.g. pre-request logging hooks or something. At the same time, I'd be
happy with another proposal that allows me to include custom headers in the
request.