Build system - Improve the makefile

This pull request is in response to the forum post "Feature bounty: Improve the Makefile" (https://community.sparkdevices.com/t/feature-bounty-improve-our-makefile/567)

Build system is reworked with automatic generation of dependencies. Style is kept generally the same, with individual build.mk files included from the source tree to define source files participating in the build. Objects are built in <project>/build/obj.

I will issue companion pull requests for core-common-lib, core-communication-lib and core-firmware which must all be merged in order for make in core-firmware/build to produce the correct result with all dependency tracking.

The build looks to be Ok on my side but I don't have hardware to verify. Problems or questions please let me know. If this pull request is accepted for the bounty I can follow up with updates to the build documentation.