Rake test:uncommitted finds git directory in ancestors.

Sometimes your git directory is an ancestor of your application root
directory.

For example:
 ./repo/.git/
 ./repo/app/Rakefile

In this case rake test:uncommitted will be unable to detect your SCM.

This patch fixes this and add a test.
Simplify code by taking advantage of latest mocha (v0.13.0).

This only works with mocha v0.13.0 or later.

Note that this also fixes a few subtle bugs present in the current
implementation :-

* Mocha was raising a `MiniTest::Assertion` instead of a
  `Mocha::ExpectationError` as intended. The latter is not recognized by
  MiniTest as an assertion failure and so it is recorded as a test
  *error*, not a test *failure* as it ought to. This leads to
  potentially confusing output in the test results.

* Mocha verification should happen as part of the test. The verification
  of expectations is equivalent to a set of assertions. These assertions
  should happen as *part of* the test so that they have a chance to
  cause the test to fail, and not just as part of the teardown. Also if
  an assertion fails during the test, then there is no need to verify
  expectations, because only the first assertion failure is normally
  reported and all subsequent bets are off.

* Expectation verification should be counted as an assertion. Mocha
  cannot record each expectation verification as an assertion, because
  we weren't passing in an assertion counter to `#mocha_verify`.
`#as_json` isolates options when encoding a hash. Closes #8182

Setting options in a custom `#as_json` method had side effects.
Modifications of the `options` hash leaked outside and influenced
the conversion of other objects contained in the hash.
cleanup, removed whitespace from CHANGELOG
`#pluck` can be used on a relation with `select` clause.

Closes #7551
depend on voloko/sdoc again

voloko/sdoc seems to be maintained again, in particular
the issues that made us fork it are resolved.
only clear caches if we are actually connected to the database
Merge pull request #8185 from senny/8182_as_json_options_stick_around

`#as_json` isolates options when encoding a hash. Closes #8182
Ruby 2.0.0 defaults source encoding to utf-8 so we need to specifically tag this file with us-ascii
Add a regression test on #8195
Merge pull request #8180 from freerange/mocha-fixes-supporting-only-0.13-onwards

Simplify code by taking advantage of latest mocha (v0.13.0).
Use new mocha version and add changelog entry for #8180
Merge pull request #8201 from nikitug/regression_test_on_ar_cache_key_precision

Add a regression test on #8195
Merge pull request #8176 from senny/7551_pluck_with_select

`#pluck` can be used on a relation with `select` clause (#7551)
Regression test for #7238
Merge pull request #8202 from nikitug/regression_test_on_dynamic_finder_result

Regression test for #7238
Assert the query result instead of checking for nothing raised

Nothing should be raised anyway :smile:

Thanks @spastorino :heart:
https://github.com/rails/rails/pull/8202/files#r2112067
Add ChangeLog entry.
backporting Struct#to_h from ruby 2.0
Merge pull request #8169 from nicolasdespres/robust_git_repository_check

Rake test:uncommitted finds git directory in ancestors.