Add push/pop onto StringTemplate

These methods will make managing templates simpler in FormHelper which
needs to manage templates temporarily.
Make create() and end() manage the template stack automatically.

By having create()/end() manage the templates automatically we can
resolve the issue where templates are left behind after setting per-form
templates.

Refs #3142
Refs #4015
Allow string values for templates option.

This allows template files to be used with input(). This makes input()
consistent with create() and allows developers to use config files
better/more easily.

Refs #4015
Fix phpcs error.
Fix grammar and phpcs error.
Merge pull request #4074 from cakephp/issue-4015-template-stack

Improve template handling in FormHelper