Successfully removed smart pointers and implemented proper garbage collection

Success!!! Libraries, Systems and Worlds now clean up after themselves.
Next on the to-do is to fix up removeComponent and removeSystem so they
actually free up dynamic memory.
Added garbage collection to removeComponent, destroySystem and removeSystem

Basic removal/destruction functions didn't clear the memory they were supposed to
but now they do!