sched: Correctly remove tasks from task list

I don't know what the previous code was supposed to be doing, but it
certainly wasn't properly removing nodes from the task list.  Now we set
node->next->prev to our prev, and node->prev->next to our next, just
like a typical linked list.

Change-Id: I0f05e7312cd7309fc621b33589c7838925eba036
link: Remove .kernel section alignment

Remove power of two alignment of the .kernel section.  This was to
support the stm32f4 MPU, which could only protect regions aligned to a
power of two.  Since the MPU is not supported, this is only bloating
code size.

Change-Id: If0b2c02d0d53b491a0c09419dc3d113db7301105
ftoa test

ftoa could really use a more formal definition of expected behavior.

Also, I hate floats.

Change-Id: Id6e782a6c897bd9e648cc33624a7e7e0d29a885e
Provide ARRAY_LENGTH macro for testing framework

Change-Id: I15aff8408e3751b6eccb4cce555f8e09d9f100df
Add strndup test

Change-Id: I866cf02b78298a25438c9be834ab22f6d94a7143
Add basic malloc tests

Change-Id: I809f6112890e50b19272ccf16d04a82dc36f5f57
list: add insert_before and insert_after functions

These functions simply provide a convienient alias to a standard
list_insert, allowing visually obvious before/after insertions.

Change-Id: I844c1c14ad0c3bca4296b0d7518b07461634d015
sched: Scheduler conversion to new list interface

This completely switches the scheduler from its custom list
implementation to the standard F4OS implementation.  Using the common
API significantly cleans up the code, though it does make for a lot of
changes.

The most significant external change is a change in the type of
curr_task, from struct task_node to struct task_ctrl.  struct task_node
no longer exists; instead, curr_task points directly to the task_ctrl
structure.  Any external code depending on the structure of curr_task
will need to be updated.

Change-Id: I6d425e4ae7c9e3d0ae7874965a5160b03d33053c
Update external users of scheduler data structures

With the switch of the scheduler from its own list implementation to the
generic F4OS implementation, the type of curr_task has changed to struct
task_ctrl, and struct task_node has been removed entirely.

All code dependent upon either curr_task or task_node has been updated.

Change-Id: I572a36253aae0b5bcc0830981106a4e274519454
shell: Avoid malloc(0) on empty commands

If a command is completely empty, it would still attempt to malloc space
for argv, with a size of zero.  Avoid that useless malloc by returning
earlier.

Change-Id: I1ddf507eefa63262eb890ed24cf8fa34909285dc
Merge "link: Remove .kernel section alignment"
Merge "Add basic malloc tests"
Merge "list: add insert_before and insert_after functions"
Merge "sched: Scheduler conversion to new list interface"
Merge "Update external users of scheduler data structures"
Merge "shell: Avoid malloc(0) on empty commands"
shared_deque: fix race between empty check and pop

Change-Id: Ia8f7e670999f3430836dcf2d1bce350df0936f21
chip: Move vector table to chip folder

Each chip has its own vector table, so it should should be defined in
the chip folder.

Change-Id: I7c2e4feb010bf293c3269e02c136116fe23af11d
shell: add simple tab complete

Completes to the first match. Doesn't yet cycle through

Change-Id: I6594b3f228ab595810c2fff73f0f534feaeb7319
linker: move faulty aligns

Change-Id: I384db3b5abed1bcd33202dbd06bacddc6a22acbe