cached, two-legged auth on pump.request

When doing a request against a server we check if it is in
PyPump._server_cache, if it is not we do a two-legged auth and store the
auth details in PyPump._server_cache for future use