Do some kernel cleanup

* Seal away private thread and kernel definitions and declarations
into the internal headers in order to better hide internal structure.

* Add a thread-common.c file that keeps shared functions together.
List functions aren't messed with since that's about to be changed to
different ones.

* It is necessary to modify some ARM/PP stuff since GCC was complaining
about constant pool distance and I would rather not force dump it. Just
bl the cache calls in the startup and exit code and let it use veneers
if it must.

* Clean up redundant #includes in relevant areas and reorganize them.

* Expunge useless and dangerous stuff like remove_thread().

Change-Id: I6e22932fad61a9fac30fd1363c071074ee7ab382
diff --git a/firmware/libc/errno.c b/firmware/libc/errno.c
index 2e3cd90..146d619 100644
--- a/firmware/libc/errno.c
+++ b/firmware/libc/errno.c
@@ -1,4 +1,4 @@
-#include "thread.h"
+#include "../thread-internal.h"
 int * __errno(void)
 {
     return &thread_self_entry()->__errno;