Makefile: allow compiler override, split obj generation

Allow a different compiler to be specified and split the actual object
compile to a different target.
Annotate for -Wunused-parameter, add -Wextra

Useful during development.
Add a method to trace call paths

Useful to debug reference count leaks where a lot objects are still
held just because a single object was not released elsewhere...

Totally not optimized and slows down a lot, but it gets the job done.