3.0 hidden input

Part of #2267. This set of changes update the hidden() method to use the new widget system. It also rebuilds some common internal helper method. Notably `_initInputField` which is where most of the magic in  FormHelper happened. It is far less magical now as it no longer calculates id attributes.

I've also made the previously hard-coded 'form-error' value a config option. I don't really relish having discussions around that value anymore. Making it an overridable default fits in well with all the tags being replaceable as well.

Next I'll work on the simpler input types like textarea, text, password and other simple HTML5 input types.