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 geezer
Merge branch 'master' into geezer
Merge branch 'master' into geezer