Creating a customizable user agent

Fix for [CB-2520](https://issues.apache.org/jira/browse/CB-2520).  Presumably, we'd eventually want a more user-exposed entry path to this.  But this work should be a good first step to that.