Merge pull request #2805 from markstory/3.0-context-improvements

3.0 context improvements
Start preparing FormHelper tests to be rebuilt.

I'm planning on tackling the FormHelper tests one method at a time.
Keeping the old tests skipped until all the cases have been accounted
for will help ensure new regressions are not introduced.
Add test stub methods.
Add skeleton methods for widget features.
Add missing errors and type checks in InputRegistry

Providing string classnames should work. If an object is provided it
should be checked for the correct interface.
Start integrating the context classes into FormHelper.

Add several new methods that allow the various context classes to be
used by FormHelper. This also removes some 2.x legacy code that will
inevitably break existing tests & code.

A few TODO's are in the commit as I didn't want to make it even more
enourmous.
Add tests for context detectors.

Move code around and add tests for the default context classes.
Very basic FormHelper::create() test is passing again.

FormHelper doesn't need to add ID's to every element it creates.
Removing id generation on form elements reduces the chances it will
create duplicate ID's requiring developer intervention.
Move create() tests closer to the other create() tests.
Add interface checks for context objects.
Clean up URL generation.

Instead of detecting the controller based on the model names, only use
the current request. If you'd like a form to always point at a specific
URL you will need to set the action/url options, this reducess the magic
and makes FormHelper simpler to understand.

This change also makes the put/post conventions simpler. Any time the
context is not in create mode, an update will be done.
Update doc block for FormHelper::create().
Get a few more create() tests passing.
Add hiddenblock to the default templates and use it.