Move secure field generation into the widgets.

Doing this solves a few problems with FormHelper and the widgets.

* Widget logic was re-implemented in the helper (date/datetime).
* Userland widgets have no way of creating multiple secured inputs.

This change also cleans up the FormHelper internals a bit which is
a nice side benefit.
Add afterRender hook for widgets.

Give widgets that implement the afterRender hook a callback to add
script or css files, or just let them manipulate the view.
Adding a couple methods to AuthComponent that are handy for doing meta
programming on the authorization flow
Adding a couple assertions to test the new AuthComponent methods
Adding some handy methods to BaseAuthenticate to be used for migrating
passwords
Removing code that does not actually belong to the Authentication
provider
Fixed typo
Ranaming method for consistency sake
Merge branch '3.0-auth-improvements' of github.com:cakephp/cakephp into 3.0-auth-improvements
Renaming Association::save() to Association::saveAssociated()

Given that Association is also a proxy for any Table method, having
function that does a different thing to another with the same name in
Table was not a good idea. This removes the name clash and allow the
original save() to be proxied correctly
Shell methods will need to be camelCased, snake case is still accepted
for invoking them. refs #2125
Removing some of the hadrcoded calls to Inflector::underscore() used in
the Router.
Rolling back some changes until I figure out how to handle plugin routes
Merge pull request #3654 from cakephp/3.0-auth-improvements

3.0 auth improvements
Merge pull request #3663 from cakephp/3.0-association-save

3.0 association save
Add debugInfo to a few classes that cause recursion

These objects often hold complicated cyclic references. This causes
something like debug($controller) to go horribly wrong. This removes the
most annoying cyclic references.
Raise exceptions on missing elements.

We should be avoiding trigger_error() in Cake3, and instead use
exceptions.
Throw exceptions when cell methods are missing.

Use reflection to capture missing cell methods and raise proper errors
on them.

Refs #3664
Add error handling for Cell::__toString()

Because __toString methods cannot emit exceptions, we render a string
error. This gives the developer some feedback about what is broken.

Refs #3664
Fix issue where __debugInfo() would be called with 0 depth.

When the remaining depth is 0, no properties should be extracted and
exported.