Passfailerror

These patches modify the success/failure framework a bit. First of all, instead of reporting the last exception that a test receives we now send all exceptions from a test. Most reporters have been modified to show the first exception in this list.

Secondly we now support three different test results: success, failure, error. Failure is when an assertion fails whereas error is when an unexpected exception is received.