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()





@ADmad, agreed.  Do we foresee any issues of users wanting to put their flash elements outside of the `Template/Element/Flash` folder? If so: should we provide another option to override the element's location - or - add some extra code to check for `/` in the element's name to override the `Flash/element_name.ctp` default?