Fail when test resolution method is overspecified

Users may register `Runnable`s as asynchronous in one of two ways:

- Via callback (by defining the body function to have an arity of one)
- Via promise (by returning a Promise object from the body function)

When both a callback function is specified *and* a Promise object is
returned, the `Runnable`'s resolution condition is ambiguous.
Practically speaking, users are most likely to make this mistake as they
transition between asynchronous styles.

Currently, Mocha silently prefers the callback amd ignores the Promise
object. Update the implementation of the `Runnable` class to fail
immediately when the test resolution method is over-specified in this
way.
Merge branch 'v2.0.0' of https://github.com/boneskull/mocha into overspecified-async

# By Christopher Hiller (13) and others
# Via Christopher Hiller (7) and others
* 'v2.0.0' of https://github.com/boneskull/mocha: (45 commits)
  Remove 0.4 from .travis.yml
  Add 0.4 back to .travis.yml
  Release 1.21.5
  replaced non-ANSI.SYS escape sequence in landing reporter, fixes #211
  make project follow editorconfig rules
  add an .editorconfig
  fixing build for NodeJS v0.6.x
  refac(lib/*): add/remove semicolons, etc..
  refac(_mocha.js): remove duplicate declaration
  build
  do not attempt to highlight syntax when non-HTML reporter is used
  [reporter] Add test for pending tests of json-reporter
  Bumps escape-string-regexp to 1.0.2.
  HTML reporter: preserve query params when navigating to suites/tests
  utils.js: correcting botched indentation in canonicalize()
  .gitignore: ignore .patch and .diff files
  changed 'Catched' to 'Caught' in uncaught exception error handler messages
  [reporter] Add `pending` field for json reporter
  rm redundant var
  Runner.prototype.uncaught: don't double-end runnables that already have a state.
  ...