Set custom HTTP user agent.

This sets a custom user agent string if the underlying Botocore session hasn't
had its user agent string customized.

cc @jamesls, @kyleknap 
I'm missing something.  How does this test actually work?  Is there some global patching happening that I'm missing.

Perhaps it's worth making this test more straightforward and exposing a user agent interface on the session itself.  That's what we really care about:

```
session = <create boto3 session>
self.assertIn('Boto3/<version>', session.user_agent) # or startswith() or something.
```