attempt at templatizing..does not compile right now (gotta go)
add more assertions and an explicit static cast here

we're tracking down a "entity manager being null from componentmapper"
issue..
add more asserts, debug helpers..
use ctor init lists as well as in-class member inits..

and make sure things have default values(!). if you're making a pointer,
freaking assign it to nullptr. that's just basic best practices..
use pragma once everywhere in place of guards
fix headers, and forwd decl a bit

apparently someone doesn't know the rule of "own includes first, and
header for corresponding translation unit always above all"
m_world -> m_artemisWorld to avoid conflicts
rm component mapper, it seems to be a silly little class that does nothing

it makes the same exact calls, the same way from what i see. perhaps
this made sense in the java version, but here it's better having this
crap inside Entity.
add the capability to clone all components of an entity

this provides functionality that i require...that is, duplicating e.g.
items that are to be dropped. one would want to make an exact (deep) copy
of everything in this item. therefore, the proper workflow is to
call ::cloneComponents(e) on the entity you want to clone, with e being
the already-created entity to add the components into directly..

of course, each subclass of Component must implement a proper copy ctor,
the compiler provided one may fuck you over. case in point, pointers.
so yeah, make sure they do a deep copy in them.