make: cleanup Makefile.base

* `mkdir -p` was called for every object file.
* `-o $(BINDIR)$(MODULE)/$*.o $(abspath $*.c)` is harder on the eyes than `-o $@ $(abspath $<)`.
* Generate .a file index because we are supposed to.
* The use of `=` instead of `:=` meant that `$(wildcard *.c)` was executed multiple times.

This PR has a minor speedup (best of 3, `time make buildtest` for `examples/default`):

After:
real    0m11.107s
user    0m50.600s
sys     0m4.940s

Before:
real    0m11.896s
user    0m51.096s
sys     0m5.096s