Add the ability for components to run a special function on removal/destruction

Allows components to define a remove method that work similiarly to init.  It will be called when the entity is destroyed or the component is removed.  It's passed a boolean flag that is true on destruction, false on simple removal.

This patch also moves the trigger of "RemoveComponent" so that it occurs before the component is removed, instead of after.

Remove destructor functionality; remove gets passed a flag that is true on destruction, so a separate destructor is redundant and confusing.