Update the current tabs to represent the given input object. When tabs
apply for both the old and new input they are reused otherwise they are
disposed. If the current visible tab will not be reused (i.e. will be
disposed) we have to send it an aboutToBeHidden() message.