Update serial and msp code to allow MSP on multiple ports.

Work in progress.  In testing using bluetooth on uart2 and uart1
connected to configurator it was observed that there is corrupted
responses being sent via uart2 - ez-gui shows some garbled data for the
box names.  updates appear sluggish in ez-gui but some correct data is
getting through.

Enabled with:

set serial_port_2_scenario = 8
save
Limit MSP ports to 2 for normal usage scenarios.
Comment cleanup
CJMCU - Update PPM/PWM mappings.

Bench tested for PPM & 4 Motor outputs only.
CJMCU - Use 64k/128k flash specific linker scripts scripts
Fix PWM failsafe by monitoring for missing pwm rise/fall signal events.
Reduce code size and ram usage of PWM supervisor code.
Delete unused code.
Removing cruft from makefile that was accidentally committed when
working on the CJMCU target.
Merge branch 'master' into msp-on-multiple-ports
Move 'boxes' out of ram and into flash - saves quite a bit of ram.
making boxes[] in serial.c static const to move them to rodata and free ~200bytes RAM
Instead of copying a profile from the master config into memory again,
just use it in-place.  This saves ~308bytes of memory.

Prior to this there were 4 profiles in ram all the time, the 3 main
profiles and a copy of one of them.

This commit was aided by a side effect of the work done to clean up the
output of the cli dump command since it is now easy to conditionally
apply the changes to the memory addressed used to read/write cli
variables.  See 8c3a869251e2886941776036d29c8a9437acb11b.
Move 'boxes' out of ram and into flash - saves quite a bit of ram.
making boxes[] in serial.c static const to move them to rodata and free ~200bytes RAM
Instead of copying a profile from the master config into memory again,
just use it in-place.  This saves ~308bytes of memory.

Prior to this there were 4 profiles in ram all the time, the 3 main
profiles and a copy of one of them.

This commit was aided by a side effect of the work done to clean up the
output of the cli dump command since it is now easy to conditionally
apply the changes to the memory addressed used to read/write cli
variables.  See 8c3a869251e2886941776036d29c8a9437acb11b.
Conflicts:

	src/main/io/serial_msp.c
Fix for resetting config to defaults.

This was missed in f51efaa7c0a5d2c0ba3d8daf8a397767c47a7bbd
Merge branch 'master' into msp-on-multiple-ports

Conflicts:
	src/main/config/config.c
	src/main/io/serial_msp.c
Support MSP telemetry on ports marked as TELEMETRY instead of MSP, this
follows the pattern that HoTT and FrSky use.

Previously MSP telemetry was actually output on the MSP port, NOT the
telemetry port.

Baudrate for MSP telemetry currently fixed at 19200.
Replace global flags with stateFlags, flightModeFlags and armingFlags.

Each flag was previously a whole byte, now all of the flags only take up
4 bytes as they are represented by bit masks.

This is cleaner because the different kind of flags are now separated.

Additionally this changes the behaviour of arming slightly.  When using
a switch to arm the aircraft will not arm unless the switch has been in
the off state once.  This prevents arming if you power the aircraft with
a low throttle and the switch in the on position.