Major changes to the project directory structure. Header and
source files are now separated into different subfolders, which
are further separated based on content. The build system has
also been completely redone. Builds now use non-recursive
auto-dependency tracking Makefiles using GNU make. Object files
and binaries are also separated into separate folders.
Additionally, the root Makefile contains targets for both debug
and release builds.