[BUGFIX BETA] BREAKING: Fixed how parentController property of an itemController when nested.

When an `itemController` is specified for an ArrayController that itself has a `parentController`
set, the framework was previously setting the itemController's `parentController` property to the
ArrayController's `parentController` instead of the ArrayController itself. This commit fixes that
behavior, and improves the docs, naming, and logic around this case.

If you were relying on an itemController's `parentController` skipping a generation, you will
need to use `parentController.parentController` or better yet, avoid the Law of Demeter
violation and provide a sensible method on the ArrayController that itself delegates to its
`parentController`.
Merge pull request #4179 from lukemelia/item-controller-bug

[BUGFIX BETA] Breaking: Fixed how parentController property of an itemController when nested