Split text and data sections if possible

This patch adds `-ffunction-sections` and `-fdata-sections` to the
`CFLAGS` if the compiler understands these flags (at least clang and GCC
do).

These flags cause every function and every static variable to go into
a section of its own in the object file. The static linker is then able
to drop functions/variables if they are not used.

The results are quite impressive ("default", BOARD=native, CFLAGS=-Os):
```
With patch:
   text    data     bss     dec     hex filename
  36686     552  108520  145758   2395e …/default.elf

Without patch:
   text    data     bss     dec     hex filename
  43944     580  109544  154068   259d4 …/default.elf
```