Improve error in runner and realClient

- Load reporters before unit tests in realClient instead of loading both
  at the same time. This allows reporters to report failures during unit
  test loading.
- Use a separate `catch` rather than an error callback for the
  `tunnel.start` callback.
- Refactor the `tunnel.start` catch, the `main.run` otherwise, and the
  uncaughtException handler to use a shared handler function.

fixes #254
closes #292

[ci skip]
Create the node_modules directory when necessary

When Intern is installed in a project that already includes all of
Intern's dependencies, no node_modules directory will be created under
Intern. Intern expects a node_modules directory.

fixes #302
Update Intern dependency to 2.1.0
Merge branch 'master' into sinon
Update sinon dependency
Add timer functions to util

The util module keeps pointers to the original global timer functions
(setTimeout, setInterval, etc.) for Intern's use in case a test mocks
them.