Add Naming strategy like pattern for Hydrators

This commit introduce strategies for key / properties transformations
Refactor Naming strategy to allow only 1 global strategy
Add Guard Traits

The GuardUtils can be used now.  The traits are for php >= 5.4 only.
#5364 Update doc-block for AbstractHydrator & NamingStrategy components
Remove "value" as a valid attribute for FormFile
Tests Remove value from valid attributes
Abstract console controller
Inject console in ConsoleManager, missing license and phpdocs
Fix typo
Tests for console controller
Change exception message
move Delete::where, Select::where, Select::having, Update::where functionality to Sql\Predicate::addPredicates
fix Having and tests added
code simplification
partially BC fixes
revert
Merge branch 'hotfix/5186'

Close #5186
Merge pull request #5364 from ronan-gloo/develop

Add Naming strategy for Hydrators
[#5364] Simplify conditional

- we know we have a boolean; remove true === test
- combine if statement from body with else parent
[#5364] Use existing filters

- Modified class to use existing filters, via a filter chain, to perform
  the work. Filter chains are stored as static properties as the
  implementation will not change between instances.
CS fixes

- EOF endings
[#5364] Added note on feature to release notes