Move Plugin to the root of the new App directory.

I think this makes sense as Plugins will not be under the App\ namespace
and will have their own namespaces. Keeping them out of App\ keeps the
separation sane and more importantly lets us re-use the existing
composer/installers features without having to make additional changes
there.
Remove unused untested function from App.
Remove manual class loading.

Classes should be autoloaded now by composer only. If you have code that
cannot use the autoloader you will have to use require() or include() to
load that code.

This slims down the App code considerably and removes a cache hit per
request.
Remove old comment tags.
Reduce the API surface of ClassLoader.

Make a bunch of properties immutable as they can just be constructor
arguments.
Remove autoloading from Plugin::load()

Plugins should be autoloaded independently of Plugin::load(). This
method now is responsible for exposing a plugin to the rest of the
framework/application. Loading a plugin does the following:

* Exposes it in the default routes.
* Exposes the CLI tools it may provide.
* Allows assets to be served by the dispatcher filter.
Add autoloaders for testapp and test plugins.

Adding these to cakephp's composer.json will cause those files to be
accessible from the application which is bad. Use the core class loader
to bind these namespaces.
Remove App::build() for plugins.

Plugins should use the 'path' option for custom paths. This removes
directory scanning and makes plugin configuration explicit. A default
path can be set using `App.pluginPath` in Configure.

Now that the TestApp is the 'app' when core tests run many of the calls
to App::build() are no longer relevant or necessary. Remove them to
simplify tests.
Reduce the scope of App::build()

Now that classes are autoloaded via a PSR-0 compatible autoloader we no
longer need to offer the ability to bind additional paths or define
extra packages. This is now done entirely through the autoloader. Only
view and locale files need to have additional paths defined as they are
resources that cannot be autoloaded.

Merge the two places where test plugins are stored in the TestApp, and
update the relevant tests.
Update more tests to not call App::build()

It doesn't do much anymore anyways.
Add default value for App.pluginPath.

This configure value is used as the default plugin path when calling
Plugin::load().
Update App tests.

Don't use App::build() to map the core directories. Instead use files in
TestApp to test objects(). Update documentation a bit and other tests.
Fix inheritance to use a class that exists.
Remove calls to App::build()

They don't do anything anymore except consume resources.
Update docs and use direct callback invocation.
Update docs in App class.

* Fix formatting.
* Remove lies.