(add/remove)Components now returns a shared_ptr to the created/destroyed component