Commit before branch to pure components
working on IDs
working on remove mechanics
GameObject and Factory.objects rebuild starting after this commit.

Because I did not understand the limits of stack allocated objects in
vector:

std::vector<GameObject> objects;
objects.push_back(SubClassedObject);

// Gets sliced back to GameObject

Therefore I had to abandon the original idea of having a tightly packed
vector of game objects that use polymorphism, and instead one of these
two options for the engine architecture:

Option 1: Steer the engine towards a property based design, where an
		  object is defined as the sum of some properties living inside
		  dedicated vectors.

Option 2: Forgo the memory manipulation idea, and instead simply have
		  the factory vector be a collection of pointers instead, enab-
		  ling the use of polymorphism at the cost of efficency.

I have chosed number 2, for two reasons: I don't understand how
property based design is implemented in a real engine, it's an interes-
ting idea which I may revisit in the future. The second reason is the
opposite of the first, I do understand some things about how to acheive
behaviors using polymorphism and the more conventional design pattern
of using pointers in the vector will be simpler for me to reason about
and actually implement for the time being.

This will be the 3rd or 4th time I have had to rething the fundamentals
of how to build this engine, and hopefully I've learnt enough as well
as simply exhausted enough alternatives that this will be the last big
change in my plans for this engine. This direction is pretty close to
what my original idea was anyway, so I'm OK with the turn of events.

I will try to ignore any future "great ideas" that I stumble upon in
some article or blog, and resolve to have a steady vision for this
project from here on.
working on TestManager
basic testing for manager done