Fix issues resulting from intermediate cached models

Cacheable models should now interact with the controller using the preRun method and the ControllerAwareInterface.

Also cleans up some validation and CSS issues for a11y.