all targets - gpio - NC guard

	- gpio init enables to set pin to NC, thus the rest of gpio HAL should not do any action
	  if pin is set to NC.
gpio and pinmap - asserts for NC as parameters (not init), abort retarget

	- retarget - abort - calls mbed_die
	- asserts added to gpio mbed hal for all targets
All targets except STM - asserts for checking presumptions (function parameters)
[ALL TARGETS] error replaced by assert for preconditions
__ASSERT_MSG macro for uvision, corrections in LPC targets - serial - assert
assert - logic corrections
[K20, LCP1768, F100RB] asserts corrections
[Freescale targets] - spi, serial assers corrections

	- reverted gpio change in TARGET_LPC11U6X
Merge branch 'master' into dev_error_assert

Conflicts:
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_K20D5M/spi_api.c
	libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11U6X/gpio_api.c
	libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/gpio_api.c
	libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/analogin_api.c
	libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/gpio_api.c
	libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/i2c_api.c
	libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/pwmout_api.c
	libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/serial_api.c
	libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/spi_api.c
	libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F103RB/i2c_api.c
	libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F302R8/i2c_api.c
	libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/i2c_api.c
[LPC targets + K20 + F407VG] spi,serial, i2c asserts logic corrections
add Arch Pro target
MBED_ASSERT - mbed assert implementation
Added XADOW_M0 and ARCH_BLE targets
assert rename to mbed_assert header file
mbed assert - guard macro correction
License headers for new assert files.
mbed common - trailing white spaces removal
spaces removal - USBHost
spaces removal - USBDevice
spaces removal - rtos