Use explicit conversion methods for stringified numbers

* As @greggroth pointed out in rspec/rspec-core#1086, the formatter
  does not work as expected when the mathn lib is loaded. This lib adds
  the Rational type which is formatted as "n/n" when stringified rather
  than the float form. By explicitly converting the arithmetic to the
  types we wish to stringify, this display is corrected.

[#1086]
Add bug fix for mathn number formatting to changlog

[ci skip]
Port @myronmarston's in_sub_process helper
Add helper to run spec in subprocess with mathn loaded
Remove mathn require from formatters/helpers spec
Add spec for formatters/helpers mathn integration
Add mathn integration spec for html_formatter
Refactors the ordering mechanism to use strategy objects
Example groups can override the default ordering.

Also OrderingRegistry needs docs.
1.8.7 doesnt have define_singleton_method
Combine ordering logic into one file.

- There's no need for so many tiny files.
- 1.9 has known perf issues with require,
  so doing one require instead of 4
  should speed up pert a bit.
- This keeps the ordering logic all in one
  small (< 100 LOC) file.
Extract srand allowance.
Remove unneeded code that came from Sam's earlier PR.
Remove stray, confusing comments.
2.0 shuffles differently.

This spec failed on 2.0. This change makes it
more resilient.
Refactor ordering registry.

- Use two of them (one for examples, one for groups),
  rather than having a single one with separate,
  duplicated methods for examples vs groups.
- Rename `resolve_example_ordering` to `#[]`. It has the
  semantics of a hash lookup, after all.
- Add `global_ordering` for the case where that is
  explicitly needed.
Change dependency injection of configuration.

To me, it makes more sense to pass it to `Random.new`
and to retain it as instance state on that object.
Injecting it in the `order` method is a little odd,
as it complicates the `#order` interface for all the
other strategies, even those that don't use the
configuration at all.
Improve expectation.
Improve isolation of order specs.

* Cleanup extra files created by individual specs.
* Change to the aruba tmp dir before running the
  command.  This is important so that it doesn't
  pick up options in our `.rspec` file.
Remove inconsistent #order and #randomize? config methods.

* Examples and groups can be ordered differently.
* Individual groups can be ordered differently.

As such, a global `order` reader method doesn't
make a lot of sense (although, assigning the global
default via `#order=` still does, I think).

Also:

* This exposed that the ordering force logic
  (e.g. to ensure CLI `--order rand` takes
  precedence over `RSpec.configure`) didn't
  work properly since it simply ensured `order`
  returned the forced option but did not ensure
  the global ordering was set properly.  I've
  fixed this.
* Don't clear the seed when setting the order to
  default. An individual example group may still
  be run in random order and will need the seed.
  There's really no reason to clear it.
* Base our decision of whether or not to print
  the seed at the end of the run on whether or
  not the random strategy ever got used, rather
  than whether or not `random` is the global
  strategy. If only one example group used the
  random strategy we would want it to print,
  but the old logic would not have done so.