Add View::cache()

This new method will allow arbitrary blocks of view code to be cached.
This allows some refactoring of element() and will also power cached
cells. Lastly, it gives developers a flexible way to incrementally add
caching to their responses if they have expensive to build page
fragments.

I've repurposed View::_elementCache() as its original purpose was a bit
silly. I've also removed the elementCacheSettings property which should
have never existed/been public in the first place.
Add cache options to Cell

The cached cell interface works the same as the element caching does.
I've intentionally omitted using options in the generated key name as
the element version only acts upon keys which is not helpful for cells
as the option keys will always exist.

Refs #5414
Fix failing test.
Fix PHPCS errors.
Merge pull request #5433 from cakephp/3.0-cell-cache

3.0 cell cache