Copy over from home repo

Initial move from github.
Removed the device manager.
Replace all the copyright. Fix Target IO.
Remove all references to SOS3 (->SOS)
Remove redundant bits
Updated the release build
Changes to the old device tree
Initial work on ARM port (needs a lot of work)
Fix the sos example code in sos.c
Performance tweak to the scheduler.

Tweak that stops the priority scheduler calling the free operation
by stopping it from popping and pushing onto the queue. Instead just
add a function to move the queue head to the tail so nothing is freed,
the pointers are just updated.
Clean up the consts & split up generic list_t etc
Fix unbounded list for head-to-tail re-ordering.

If the list size is 1 it was failing. If the size is 1
it implicitly works rather than fails.
Remove more redundant code.
Initial stage of a massive refector.

kernel_types.h contained the internals of all the kernel structures
which lead to a really poor design. Started to move them out. This is
the first stage where all the process, thread and objects structures
have been moved out in a more OO way.
Fixes for initialisation.

* Fixed the object table not being allocated.
* Fixed the threads not being added to the process.
Fixes to the scheduler from pulling it in from the old files.
For some reason the stack is offset by 428 bytes.

I suspect this is due to page alignment in the virtual memory mapping.
Alignment checks in process creation.

Test app is 428 bytes off - same as our offset.
Fix for the alignment of the process memory pool.
Refactor out some of the memory types - not finished yet renaming.

This pulls out the internal memory code from the crappy kernel_types.h
file.