Added CMake compilation system

Moved code to different directories now that it's easy to do that
Added tester programs to code base now that it won't be confusing
Modified .gitignore to no longer ignore tester programs
Adjusted headers in code files to match new compilation system
Updated file format specification

Fixed an out-of-date example
Fixed a typo
Added an option