Reworks the change component function

The function now has three modes for change (single component, all of a
kind, and anything in a slot to a given component). These methods all work
with the recently added recursive feature.