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 
So the circular import still occurs if this if statement is entered right?

I would prefer to remove the circular import and move the import boto3 to the top of the file. However, avoiding the circular import looks tricky. I do not have any ideas that come to mind right now