Cmake

Build system maintenance. Add a src directory. Change the make system to cmake, allowing for makefile simplicity and easier toolchain switching in the future. Adds unit test folder and application.