Make cpuload correct and more efficient for all configurations of NuttX

Currently cpuload assumes there are only 2 static threads - idle and init, this
is true only for "basic" config of NuttX, as there can be 3 more static threads:
paging, work0 and work1 - depending on config. In such cases cpuload
would mistake one of them for init (which in fact is always last), giving
incorrect results to "top"

Signed-off-by: Freddie Chopin <freddie.chopin@gmail.com>
Fix a couple of things that break 'make export'.
It seems to be safe to build these for any config.
Break up the firmware build into a 'make export' phase for NuttX on a per-board basis, and then a separate per-config phase that allows us to avoid re-building NuttX all the time, and ship more than one firmware config for a given board.

This is a first cut; it builds one firmware for each of FMU and IO.
Switch to optimising some things for size rather than speed.
Recover commits lost in the previous merge. Syllableise PX4_BASE like its peers.
Minor fixes to the toolchain definitions.
Move more functionality into firmware.mk. Now we build the px4 bundles in a way that will let external builders generate them too.

Pass the platform define into the firmware builder.
Ignore NuttX export archives and anything in the Build directory.
Move upload functionality out into a separate makefile.
Simplify the PLATFORM/CONFIG handling a little.
Rename makefiles to help categorise them.
Add support for per-config ROMFS generation.
Back out deletion of the /etc/init.d scripts; we need these.
We need a stub ROMFS header so that the client can supply their own bits.
Git zombies must die.
Auto-generate builtin command prototypes.
Tidy up path configuration, etc.
platform -> board
Get a bit fancier with the builtin app specifications, so that we can generate them from apps as well as the config.
Checkpoint: application framework makefile done