Refactor client build for new style plugins
Refactor client build for new style plugins

This change moves all web client assets *inside* the python package
using them.  This is done for two reasons:

1. The folder structure is the same between development and production
   installs.  This removes the need to automatically detect what
   environment we are in, which isn't generally possible in python.
   It alse makes including the web_client assets into the python
   packages easier to manage... it removes having to copy and merge
   directories inside setup.py.
2. It removes the need to generate symlinks to put web assets inside a
   single path while building.  Using symlinks causes many obscure
   problems with module resolution in node.  The plugin web assets are
   still simlinked into place, but these symlinks are managed by npm
   itself rather than externally.

All core web assets have now been moved into `girder/web_client` where
they will also exist in the distributed python package.  This includes
build and testing infrastructure, though the test infrastructure is
excluded from the published python package.

One of the more disruptive changes is the merging of the "application"
and "source" packages (released as `@girder/app` and `girder`).  Because
the web assets are now structured in a more traditional manner, there
isn't a need to keep them separated.  There is a second top-level npm
package named `@girder/lint`; this contains global linting (and esdoc)
dependencies that are shared between the core and plugin code so that
in place linting works inside text editors.

One ugly part of this change is that there no longer is a "staging"
separate from girder's source.  The primary problem with this is that
there can no longer be a "committed" package.json file because it is
autogenerated by `girder build` to inject the installed plugins.
Instead, there is a `package.json.template` file that is used as the
core package configuration without any plugins.  Our new npm publishing
step would have to rename this file to `package.json` prior to making
the release.  I don't much like this, but I could think of a way to
maintain in place development (with npm watch) while at the same time
avoiding creating symlinks.

Kitware/candela,Kitware/candela,Kitware/candela,Kitware/candela,Kitware/candela