stdio: increase printf buffer size to accomodate INT_MAX
readme: Add headings for various sections

Change-Id: I9e2de15cd2a96a2118340b5a73ee0b6551d69e73
Merge branch 'master' of github.com:prattmic/F4OS
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