Issue title: Add User Agent to Dask's http bytes requests
 Issue body: It seems to be common to specify ones application in the User Agent HTTP header.  This helps servers understand the kinds of applications that access their data.  We might consider adding a Dask specific User Agent to our header by default when accessing data.

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent

First reported by @yuvipanda at https://gitter.im/pangeo-data/Lobby?at=5be4d1a6e8add80e63c24815

cc @martindurant 
 Comments: 
 Comment 0: Having dask.bytes.HTTPFileSystem set the user agent would be trivial enough to implement. However, python doesn't have a concept of "application" and it's not clear where a boundary should be. Does it mean "whenever these methods are called by code that we have added to dask"? I don't see a way to do that except to add args to every call, or yet another subclass somewhere.

I have been advocating pulling file-systems like this out of Dask, making things like `open_files` more generally available, and that would make methods on HTTPFileSystem more likely to be called via code paths not in Dask, e.g., via Intake. I think it would be OK to globally set the HTTP headers on the file-system class, or even on the lower-level requests/httplib machinery, and that a script that depends on Dask sets the user-agent appropriately. That could be a config thing, for instance.
 Comment 1: I think it is ok to just set a default in the library, and specify in the docs that people should provide something useful. This is what requests does, for example.
 Comment 2: I agree that the definition of "the application" gets vague with libraries and hierarchies, but I would consider dask to have a sufficient amount of logic wrapping the underlying implementation that it is worth identifying itself as distinct from other requests/tornado/aiohttp requests.

I believe most Python http client libraries set a default user-agent (`python-requests/{version}` for requests) if you don't give it one. It makes sense to me for something like dask (or intake, or wherever this lives) to follow suit and declare its own *default* user-agent and, like requests, allow the caller to specify the user-agent if they consider themselves to be the "application" making the request.

I think the main value for this is in providing the data-provider analytics on "how are people consuming my resources," so the question maybe boils down to "is it useful and/or valuable for dask to be distinguishable from other Python code in this regard?"

 Comment 3: Can someone (maybe @mrocklin or @martindurant 😉) please update us on the status of this issue?
 Comment 4: I am not sufficiently convinced of a need to change this. HTTPFileSystem already takes arbitrary kwargs, so it's possible right now to set the user agent string using storage_options - so I suggest closing.
 Comment 5: Thanks Martin!
{'source': 'GithubIssues', 'repo_name_with_owner': 'dask/dask', 'issue_id': 379243038, 'repo_stars': 10105.0}