[Bugfix beta] [fixes #3444] Prevent an itemController leak

itemControllers/subControllers should be tied to bound to the life cycle of the parent controller.
cleanup of array_controller

- _subController is not observable so remove get/set’s
- if we have no subControllers, don’t bother keeping the array in sync with arrayContent
- don’t try to access subControllers array beyond it’s length
- idiomatic es6 export default
minor enumerable_utils OCD
subController’s parentController & target properties are now set to the concrete parentController.
Merge pull request #4873 from stefanpenner/prevent-item-controller-leak

misc ArrayController cleanup (and bugfix)