new makefile with implicit rules
added missing `std::` to function declarations

The `gen_funcdefs.h` script used to add the missing namespaces, but this is a
more robust solution.
bug fix Makefile, changed `build` to `objects`
added unit tests to Makefile
Makefile: changed list common objects to sources
Makefile: automagically add all unit tests
Makefile: proper usage of `*FLAGS`
Makefile: renamed `BUILD_ROOT` to `BUILD_DIR`
added information about building in the readme
removed `target_dirs`, added `mkdir` to relevant rules
Merge pull request #3 from joostvanzwieten/clean-makefile

Clean makefile