Compile the libopencm3 using toolchain modules

Make a compilation of the library more unified, with all architectures built with same flags.
Make use gcc toolchain module to build entire library.
The entire build system is prepared for use of other toolchains. (will be implemented later in #263)

Each extracted part from the makefiles is commited using separate commit to be each change easily tracked. Before pushing into master, some of them needs to be merged together.