Adding user agent name and version to client constructor.

User Agent string is now easy to generate correctly

Client ctor has new optional parameters for constructing the user agent string.

The user agent string can still be set manually.

Added tests relavent tests.

Updated README.md