Synchronous errors in hooks no longer halt execution

Work toward #270.  This makes synchronous errors inside hooks behave in a predictable non-halting fashion.

Asynchronous errors are not handled by this change.
Add more tests against hook halting
Fix hook halting on due to timeOut
Remove Runnable.timedOut

Timed out info is  better kept inside the run call.  This allows cleaner hook behavior, where beforeEach and afterEach hooks are often run multiple times and need separate state.
typo fix for afterAll doc
typo fix timeout.js old comments
Handle failures during before hooks
Expand hook test for hooks
Add check for "should not run" to hooks