1. Changing environment and subsequent reload don't cause the affected
component to be restarted: component_match doesn't take into account
the envop structure.

2. Rethink the component comparison: instead of the special component_match
function, serialize two components into JSON and compare them together.
Possibly this will require adding a JSON comparison function to libjson.