Support for dynamically allocated thread stacks.

- Added another ctor for Ar::Thread that only takes the stack size.
- Extended Ar::Thread::init() to allocate the stack if the provided
  stack pointer is 0.
- The Ar::Thread dtor deallocates a dynamically allocated stack.
- Added a member to Ar::Thread to track a dynamically allocated stack.
- New kArOutOfMemoryError status code.
- Some code in basic_test.cpp to test dynamically allocated stacks.