Restructuring API request architecture

This commit is a big departure from the original SDK.
Now instead of making requests directly, the UGConnection
object creates instances of NSMutableURLRequest that can be
handled by a connection mechanism of the developer's choice.

It also includes a request controller (UGHTTPRequestController)
that can process these requests. The UGConnection object
is responsible for creating and signing requests for a
particular signed-in app connection. Requests can be made
synchonously or asynchronously. Asynchronous connections
will be probably be preferred in iOS apps and synchronous
connections will probably be preferred in scripts and unit tests.
This architecture allows as much code as possible to be shared
between asychronous and synchronous connection mechanisms.