Added vi modeline to preserve tabs
Added a clean target in the Makefile and ignore compiled binaries in git
Abstracted Makefile + cleanup