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 
The behavior right now is to bind the user agent when the client is created (specifically it's tied to an endpoint object).  I think that seems reasonable, but I could also see wanting to further add to the user agent after the client is created (for resources etc).