Better unexpected topic exceptions

This should fix #107 

Changes to treat topics as passing/failing tests so that when unexpected exceptions happen, they are reported correctly as failures. This also triggers the whole run to fail instead of succeed. Changes to VowsResult automatically fix the test reporter since it already reports on topics, but there were some explicit changes needed for XUnitReporter since it was completely ignoring unexpected exceptions in the topic.

Also, teardown now blocks on subcontext and vow thread completion so that it runs regardless of the success/failure of those vows and subcontexts.