Remove unused timer from build
Set PendSV and SVC to lowest priority

PendSV was already set to the lowest priority.  With both SVC and PendSV
as the lowest priority, neither will run until all other interrupts run,
and they will not interrupt one another.

Suggested in ARMv7-M Reference Manual, B1.5.4, "Use of SVCall and PendSV
to avoid critical code regions"
SVC for registering tasks

When task switching, use an SVC to register a new task with the OS.
This paves the way for removing the interrupt disables in append_task
and switch_task.
Replace approx_num_tasks with actual task count

approx_num_tasks was unsafe, as it walked the task list from user space.
If a task was freed during the walk, it could easily by dereferencing
the next pointer from an invalid task node.
Provide stack dumps on fault.