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.
Refactor: extract Ordering::ConfigurationManager.

There's enough ordering config options that
they should be grouped into their own object.
Refactor: refine how we pass config state to Reporter.

It's more natural to just pass the config instance in
the initializer, rather than passing the seed to
`report` and referencing `RSpec.configuration`.
Allow custom orderings to be registered.
Use doc formatter when running individual files.
Use groups vs example strategy for groups vs examples.

We were wrongly always using the example strategy
for both groups and examples.
Improve formatting.
Change #[] to #fetch.

For the case of an unrecognized order symbol,
I want to have it take a fallback block
(like the semantics of Hash#fetch), but #[]
can't accept a block so we have to change the API.