cpu/stm32f0: fixed hardfault indication
cpu/stm32f1: fix i2c master read for N>2 bytes

This fixes reading more than 2 bytes from the slave device.
In the current implementation the last byte was not read from
data register and the termination sequence buggy.
cpu/stm32f1: fix i2c read for N=2 bytes
Added a function for the slave to print received data.
cpu/cc2538 bug fix: OE (output enable) bit was set by gpio_init_in().
make: Implement optional features

Fixes #1876

This PR introduces `FEATURES_OPTIONAL` which can be used to tell the
Make system, that the application would like to use some feature, but
the build should proceed even if the selected board cannot provide the
optional feature.

`make buildtest` and `make info-supported-boards` heed this variable
when examining the list of supported boards.

If a word is present in `FEATURES_REQUIRED` and `FEATURES_OPTIONAL`,
then `FEATURES_OPTIONAL` takes precedence.
make: expose used features with `-DFEATURE_ABC`

All used feature requests (both in `FEATURES_REQUIRED` and
`FEATURES_OPTIONAL`) that could be satisfied get exposed to C with
`-DFEATURE_ABC`.
make: allow drivers to implement features

This change allows drivers (or any module for that matter) to provide
features. This is e.g. useful if a board does not have a transceiver,
but your application uses `USEMODULE += some_driver`, which implements
the transceiver interface.

The line `FEATURES_PROVIDED += some_feature` should go to the guarded
block in `{sys,drivers}/Makefile.include`.
core: hwtimer: use disable/restoreIRQ
core: make sched_runqueue public

Reverting b604832, because thread_yield() needs to access this
information.
core: move thread_yield*() to thread.[ch]

Although it might conceptionally rather belong to the scheduler, the
yield functions are prefixed with thread_ and thus, belong there.
cpu/cc2538: sbrk() checks if the requested memory is really available.
sys:ringbuffer: static inline ringbuffer_init
sys:ringbuffer: use memcpy in ringbuffer_get
Merge pull request #1651 from Kijewski/ringbuffer-use-memcpy

sys:ringbuffer: memcpy and static inline
timex: make functions static inline

This commit makes all one- or two-liners in timex a static inline
function, defined in the header file.
timex: replace print by a to_str function

Instead of printing the timestamp, it's more flexible to convert it into
a string.
timex: update copyrights
timex: remove redundant struct timex_t declaration

timex_t is available as a typedef, declaring it as `struct timex_t` in
addition is not necessary.
Merge pull request #1886 from locicontrols/cc2538-sbrk

cpu/cc2538: sbrk() checks if the requested memory is really available.