Refactor Signer class

This is to allow oauth2 to be usable in asynchronous frameworks such as Twisted or Tornado. Currently, the Signer class is commingled into the Client class, forcing all usage of signed requests to be over httplib2, thus synchronous. By breaking the act of signing out from the act of making the request, oauth2 becomes usable in asynchronous frameworks.