Convenience macro for accessing entity components

A side-effect of this is that the component name is accessible on
both the type and instances of the type.
Free old component when its replaced with a new one