Adding a User-Agent header for the SDK

Would it be useful to have getters? Or is the call pattern primarily "set and forget"?

Also, minor note about naming: I think a lot of conventions would say "withAppName" instead of "setAppName", but I'm okay with either.