New timer implementation

This is first part of new softserial code. Main timer code is changed, changes to rest of code are kept to minimum.

macros for BASEPRI based synchronization are added to project (atomic.h)

TIMER_PERIOD fixed in pwm_rx.c
Merge remote-tracking branch 'refs/remotes/upstream/master' into feature-timer
Code cleanup / fixed missing TIM8_UP handler
Fixed original softserial code

Bit end timer must by shifted by half-bit period to startbit edge, so that next edges are in middle of bit interval. This behavior was masked with old timer code, but noise immunity was probably very low.
Merge remote-tracking branch 'refs/remotes/upstream/master' into feature-timer
Merge pull request #160 from ledvinap/feature-timer

New timer implementation
Updating serial documentation to cover new defaults, updated examples.
OLIMEXINO - Disable MPU3050 support.
added smartport telemetry

Conflicts:

	src/main/telemetry/telemetry.h
added single wire half duplex UART

Conflicts:

	src/main/telemetry/telemetry.h
Updating telemetry documentation to cover SmartPort (S.Port).
Minor formatting fix.
Adding details of the new serial port scenario for SmartPort telemetry.
Adding a FIXME to the SmartPort code.
Allow smartport to be configured.  Fix shared port flag calculation.
List terminator is wrong in some arrays
Merge pull request #165 from ledvinap/fix-pwm_mapping

List terminator is wrong in some arrays
Updating GPS documentation with details on how to enable GPS.
Ensure sensors bitmask contains the flag for the GYRO after gyro has
been detected.
Update RX & Battery OLED pages.
RX page shows up to 14 channels.
Battery page shows current and capacity information.