Adds user-agent to request headers.

We've been tracking User-Agents in Orchestrate, and thought it would be really nice to have this client identified better.  This mostly just adds in the agent header, but does some refactoring to reduce some duplication to get there.  Happy to change whatever.