Use ContentsManager to serve files and notebooks

In reference to #6613 I'm adding this PR. Rather than working on paths, it will use the current ContentsManager to get the contents of a file.

This includes the suggestions made by @Carreau and @minrk in #6620:

- set correct content-type when serving file
- use `os.path` instead of string operations.
- don't change `AuthenticatedFileHandler`, but add new class `FilesHandler ` in `html/files/handlers.py`
- check if files are hidden (if they are real files)
- use extra branch

I tested this with the default FileContentsManager and the [MongoContentsManager](https://github.com/manuelRiel/mongo_notebook_manager/tree/ipython3) developed for iPython 2 by @laurenceputra and adapted to iPython 3 by myself (still in testing).

(new pull request on extra branch, closing #6620)
This needs to be non-utf8 bytes to accurately test the code. Can you write `b'\xFF' + os.urandom(5)' to guarantee it's not valid text?