Fixed bug in run_tests.

* Previously we were modifying a list while we were iterating through
  it giving us undefined behavior. Fix is to make a copy of the list.
Importing interact now imports all modules.
Completed unfinished --mode support.
Fixed bad cleanup logic in capture fork.

* I need to flush all of the buffers because I'm exiting without
  letting the python interpreter do any of its normal cleanup.
* Previously I was calling sys._exit which deosn't exist, so the
  fork was dying on an exception and performing the proper cleanup
  logic (which made some of my temp directories dissapear randomly).
unittest module handle protected visibility.

* protected is also #defined to public now.
Improved core documentation, improved interface.

* Some functions return self now to make test functions more concise.
* Documentation of TestResult object was added (the class itself had
  no docstring previously).