Hacky start to building a selectbox input widget.

I think splitting FormHelper into smaller parts will make the code
more manageable and extensible. I know for sure that a 3000 line class
is neither of the above, so smaller classes can't be worse.

This change also puts a stub in place for the Context class which will
eventually contain all the relevant context for building forms from the ORM
and other sources like the request. Hopefully this class can insulate the
rest of the input libraries from the ORM and request objects.
Add empty option support.

This is a useful option that we should keep from 2.x
Remove the context class.

It is really not warranted at this time. The input classes are even simpler if they have all their pre-requisite
data supplied to their render method.
Add additional test for empty.
Add tests for selecting multiple values at a time.
Some refactoring and adding test for disabled rendering.
Add disabled option support.

Add disabled options and tests for them.
Remove deprecated loggedIn
remove deprecated String feature
Remove more deprecations
Add optgroup rendering.
Add HTML escaping.

Add an escape option to toggle HTML escaping of attributes and node text.
Make attribute formatting part of StringTemplate

Since attributes are basically string templates with a tiny bit of logic it felt
that these methods would belong here. In the long term I hope to remove them from
Helper and have Helper use these methods instead.
Remove duplicated attribute handling code.
Add doc blocks to SelectBox.
Update docblocks in Association
Merge pull request #2627 from bcrowe/3.0-association-docblocks

Update docblocks in Association
Merge pull request #2626 from dereuromark/3.0-depr-cleanup

3.0 deprecation cleanup
Fix failing tests.
Fix coding standards error.
Fix support for Traversable when creating option groups.