Split removal handling from observer to ParcelRemoveHandler

Because Truck needs exactly one ParcelRemoveHandler when removing a parcel + restore right semantics to observer