First draft of new kernel registry machinery

IPEP 25
Add supporting for making a directory for the native kernel
Better describe functions in kernelspec module
Start refactoring KernelManager to use kernel registry
Miscellaneous fixes to kernelspec system
Expose --kernel arg for selecting kernel on console and qtconsole
Nicer formatting for default kernel files
Allow an arbitrary number of kernel directories to search
Fix writing native kernel spec on Python 2
Rename list_kernel_specs to find_kernel_specs
Special cased kernel name is 'python', not 'native'
Add mechanism to specify environment variables in kernel spec
Allow IPython directory to be passed down to kernel selection from App

With apologies to @ivanov for creating a new Manager class.
Nicer error message when kernel is not found
time all the things
don't test js test groups by default

since they are huge and slow, treat the like parallel (also huge and slow)
add test group env grid
Merge pull request #5740 from minrk/travis-test-js

run js tests separately on travis
Describe using PyPI/pip to distribute & install extensions

From discussion on gh-5742
Merge pull request #5744 from takluyver/doc-extensions-pypi

Describe using PyPI/pip to distribute & install extensions