3.0 - FlashComponent + FlashHelper

In a nutshell, this PR ports the existing flash functionality into a separate Component/Helper -- and is a follow-up to https://github.com/cakephp/cakephp/pull/3409 after digesting the feedback within.  In which, I largely agree with @jippi's comment.

* Different from the previous PR: logging stuff, default message string templates, static Session calls were all scratched, etc.
* Ported Session classes' flash handling into this Component/Helper
* Added ability to pass an exception as a flash message
* Condensed positional parameters into `$options` array
* Added `__call` magic method to set flash's element, for verbosity
* Kept the "when element === null" default string template around for the sake of the future of `cake.generic.css`
* Scratched the ability to set string templates, as these are better suited for elements, because after Cake's default output/css these will need to be customized to a CSS framework or a user's specifics needs -- to the point where defining all the HTML/tokens in a string template would become silly.

Up for discussion:  FlashComponent's `__call` could look for elements within `Template/Element/Flash` instead of a `flash_` prefix.

With these changes the following can be deprecated/removed:
* Cake\Network:Session::flash()
* Cake\Network:Session::readFlash()
* Cake\Network:Session::deleteFlash()
* Cake\Controller\Component\SessionComponent::setFlash()
* Cake\View\Helper\SessionHelper::flash()





@dereuromark There is escaping in the built-in templates. I'm all for having escaping on by default, but it should be done in the right layer. Escaping in the component does not make sense as you could be putting flash messages into JSON which doesn't need HTML entity escaping.