Makefile refactored

- now uses generic rules
- supports both debug and release build
- you MUST call 'make clean' if switching debug<->release
- build directories removed from ignore file
testing refactored

- CATCH framework is now used
- new makefile target for testing
- old tokenizer tests refactored for CATCH (slightly ugly, but working)