Bug 1063109 - Required carts should be handled higher in the model

This ensures that sufficient context is available to remove carts with
requirements, and add requirements in add/remove_cartridges.

Added a few more functional tests.
Only check dependencies on add/remove, not during elaborate
Merge pull request #4708 from smarterclayton/bug_1063109_trim_required_carts

Merged by openshift-bot