Remaking build with CMake

Simplifying the code will make it a lot easier to mantain.
Removed unnecessary files

Removed forward declaration headers, the custom allocator implementation and
both project and deps folder.
Removed legacy code

Its pointless to decide if a build is a release or debug type during compile
time. CMake should take care of it during it's configuration step.