Added constructors for kernel objects.

- The init() methods are retained, and all objects have a default
  constructor that takes no arguments (and does nothing). So object
  initialization can be delayed.
- The new constructors simply call the init() methods.
Stack overflow detection change.

- Added static function THREAD_STACK_OVERFLOW_DETECTED() to make it
  obvious why the kernel was halted when looking at the call stack.
- Moved the stack overflow check to the end of the scheduler instead
  of every time through the search loop.
Made exception handler priorities the lowest possible.

- Set SVCall, PendSV, and SysTick exception priorities to the lowest
  possible on both M0+ and M4 (which is 0xff).
- Moved handler priority constant to ar_port.cpp and reduced to a single
  constant for all handlers since they must be the same.
Checkpointing changes to add a Timer kernel object.

- Added Ar::Timer class and ar_timer.cpp source file.
- Thread::setPriority() allows a priority of 0 to be set if it is
  being called on the idle thread.
- Thread::incrementTickCount() now checks for a timer that has expired
  and bumps the idle thread to max priority.
- The idle thread inner loop now checks for expired timers, handles
  them, and restores its priority to 0.