<application.rb> Add more sensible ENV:* handling

Instead of factoring out the add_connection logic, this ENV:* handler
fixes the subscribers instead. All ENV:xyz subscriptions that aren't
ENV:* are deleted from the subscriber first, then all the ENV:xyz
connections in the publishers hash are added to the ENV:*
subscriber. This should prevent hooks from running twice and keeps the
logic in the elaborate function where it belongs.
<application.rb> Refactor ENV:* handling to operate on copies of carts instead of carts themselves

Created new function - subscription_filter - to resolve subscriptions
for component_instances without altering the cartridge objects
themselves. Added logic to elaborate method to consume new
subscriptions array
<cucumber test> Begin sketching out ENV:* cukes tests

A few steps will need to be written to support these tests. The tests
need to modify cartridges by changing their manifests and hooks. This
includes adding/removing subscriptions, adding/removing published
connections and adding new environment variables.
Added subscription steps, "will not exist" step breaks right now, need to implement second scenario