[#4296] Fix issue with ObjectProperty filters

- array_walk() will traverse every pointer in the original input,
  regardless of modifications to the input, leading to errors. Modified
  ObjectProperty hydrator to filter keys first, and then extract values.
Less expensive operation

- array_keys() essentially creates a new array, using more memory. It's also
  like iterating the array twice.
- If we're going to iterate once, might as well only do it once.
Merge branch 'weierophinney-hotfix/4296' into develop

Forward Port #4296
Add initializable interface to input filter
Feedbacks
Set hydrators not shared by default
Merge pull request #4319 from bakura10/hydrator-plugin-manager

Add various plugin manager
[#4319] Fix tests

- Intention changed mid-PR, but tests were not updated; demonstrate that Factory
  composes a default filter chain and validator chain by default.
[#4319] Do not share input filter instances by default
Merge branch 'feature/4319' into develop

Close #4319