Change remove() to disconnect Components from DOM and from broacasters

remove() should now be used to effectively destroy Components. An error
will be thrown if the user tries to reuse a remove()-ed Component.

detach() should be used to disconnect Components temporarily (this
method replaces the previous functionality of remove()).

Close #601.