Add modular build system for user selection of parts of libopencm3

This Pull Request adds new modular build system for reusing the definitions defined in the makefile. 

It opens a door to support other compiler toolchains as this can be done only by adding two files to the lib.
It enables the user to selectively enable some extended functionalities (linker script generator, for example) of libopencm3 in the simple, standard way.

The GCC rules are designed to be maximally identical to the default rules, found in make 3.81