Improve User-Agent

- No Spaces in the user agent 'name' portion.
- Resolve the project version more explicitly so that it will be set propertly
  even if users are fatJar'ing, shade'ing or assembling it with their project
- Allow callers to specify a value that can be appended to the user agent