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
assert rename to mbed_assert header file
mbed assert - guard macro correction
License headers for new assert files.
[NUCLEO_F401RE] Remove call to Systick

+ Update Cube F4 HAL driver to V1.1.0RC2
[NUCLEO_F401RE] Correct PWM channel on PA_3
Add support for remote CAN frames

Fixed bug where outgoing messages always had DIR bit set, even if
message type was CANRemote.
Fixed TODO where incoming messages were always assigned message type
CANData even if the message was remote
Changed filter setup to no longer set MDIR bit in receive filter; this
allows remote messages to pass through the filter.
[NUCLEO_F401RE] Add missing IT flag reset + update system clock variable
[K64F] GCC startup fix - watchdog, linker correction and NVIC number of vectors