at86rf2xx: rework transmit and receive handling

This patch is a complete reimplementation of transmit and receive
handling for the at86rf2xx driver.

It solves also two bugs:

First:

The RX_SAFE_MODE is enabled and the transceiver doesn't leave the
receive state while the framebuffer isn't read by a CMD_FB command.
This is useful to read out the frame and don't get into another receive
or transmit state, otherwise the frame would be overwritten.
The current driver do twice CMD_FB calls, the first one leaves the
this protection.

Second:

Sometimes the CRC calculation is correct and the length field is above
127. The current mac802154 layer and filter of at86rf2xx doesn't check
on this and the kernel crashes. In this case the frame is corrupted, we
send the whole receive buffer to the next layer which can be useful for
sniffing.

In addition the irqworker is removed. Instead we do async spi calls and
no scheduling is involved anymore. The transmit function is also
asynchron but with a wait_for_completion handling. The mac802154 layer
doesn't support asynchron transmit handling right now.

The state change behaviour is now changes, before it was:

1. assert while(!STATE_TRANSITION_IN_PROGRESS)
2. state change
3. assert while(!STATE_TRANSITION_IN_PROGRESS)
4. assert once(wanted state != current state)

Sometimes a unexcepted state change occurs when 4. assert was violated.
The new state change behaviour is:

1. state change
2. wait state change timing according datasheet
3. assert while(wanted state != current state)

This behaviour is described in the at86rf231 software programming model [0].

[0] http://www.atmel.com/Images/AVR2022_swpm231-2.0.zip
at86rf2xx: move RX_SAFE_MODE setting to hw_init

There is no need to set this bit in start callback.
at86rf2xx: rework irq_pol setting

This patch rework the irq_pol register setting for RISING and FALLING
interrupt settings only. The at86rf2xx datasheets doens't describe any
case for level irq interrupts and it didn't work on a beaglebone with a
at86rf231 chip.

Also use IRQ_TYPE_* defines instead of IRQF_* defines. There is no
functionality change but irq_get_trigger_type returns IRQ_TYPE_* defines.
at86rf2xx: rework state change and start/stop

This patch removes the current synchron state change function and add a
new function for a state assert. Change the start and stop callbacks to
use this new synchron state change behaviour.
at86rf2xx: rework reset to trx_off state change
at86rf2xx: add timing for channel switch
at86rf2xx: add sleep cycle timing
at86rf2xx: remove unnecessary return
at86rf2xx: add new author