cpu/avr: Make sure that GCC removes all unused symbols.

This magic comes from the `--gc-sections` linker flag, which turns on garbage collection for unused input sections. The compiler flags `-ffunction-sections` and `-fdata-sections` make sure that each function and each static data definition have their own section. The result is that GCC can prune away all unused symbols, reducing the size of the resulting executable.

These optimizations may be disabled by setting the Makefile variable
`SMALL` to zero.
Merge pull request #133 from darconeous/pull-requests/cpu-avr-gc-sections

cpu/avr: Make sure that GCC removes all unused symbols.
Merge remote-tracking branch 'upstream/master'