allow ContentsManager methods to return Futures

mainly adding `@gen.coroutine` and `yield gen.maybe_future` all over the place.

No FileContentsManager methods are actually async at this point.
use gen.Return for Python 2
Fix HEAD requests for kernelspec resources

Closes gh-7237
Closes gh-7258

StaticFileHandler.get() is a coroutine. When Tornado calls a handler
method, it uses the return value to determine whether or not it's a
coroutine. So when head() calls get(), it needs to pass the return value
on for Tornado to handle it properly.
Merge pull request #7253 from minrk/async-contents-handlers

allow ContentsManager methods to return Futures
Merge pull request #7259 from takluyver/kernelspec-head-error

Fix HEAD requests for kernelspec resources
Code for the less magic was unnecessarily reading the entire input file twice.  Redundant read removed.
Merge pull request #7261 from otakucode/master

Code for the less magic was unnecessarily reading the entire input file ...
MAINT: Use `Type` instead of `DottedObjectName` for managers.

`Type` is strictly more powerful than `DottedObjectName` and is easier
for users to override.
MAINT: Use `Type` instead of `DottedObjectName` Log{in,out}Handler.
MAINT: Remove unused imports.

I was in the neighborhood...
DEV: Set `klass=object` for Log{in,out}Handler.

It seems plausible that people will implement custom handlers that
aren't subclasses of a known type.

Another possible option would be `IPythonHandler`, but even that feels
too restrictive.