formatters run better when $SAFE mode is on

Setting $SAFE=3 causes some file operations to raise a SecurityError. This patch allows you to run in SAFE mode without those SecurityErrors masking the real errors raised by the code under test and/or by RSpec matcher failures.

I extracted the SAFE setting/resetting logic into a helper method called "safely" since it's called from several places.
improve rdoc comments in BaseFormatter
basic JsonFormatter
add command-line 'j' or 'json' formatter option
Don't add `describe` to every object.

Instead, make it only available on:
  - The main object--so it can be used at the top level.
  - Modules--so example groups can be declared nested
    within modules, as is the common practice.

Besides this, the only other place we need describe is from within
example groups (so we can nest them), and this is taken care of by
RSpec::Core::ExampleGroup.describe.

I got the idea for this from a recent change in Sinatra that similarly
limits the DSL to just the main object rather than all objects:

https://github.com/sinatra/sinatra/commit/46bdb7dcf842afdb3bce57a6753eb4d909b1225d
refactoring: alias prepend and append on HookCollection

- a bit more OO
- one less conditional per hook registration
Merge pull request #609 from alexch/json-formatter

JSON formatter
Changelog for #609 [ci skip]
Revert "Merge pull request #609 from alexch/json-formatter"

Failed in ci build for 1.8.7, jruby, ree

This reverts commit 8e41f1ad5d3d39888ec8742a45671c8e7c30d653, reversing
changes made to 076d683e5c93858a50e6aa8ec51fb2c6291503cd.
Restore "Merge pull request #609 from alexch/json-formatter""

Most of the commits with this merge are fine - only one is causing failures
in some rubies - we can deal with that issue separately.

This reverts commit 359cd381b66c307791c7e1fe8bcba42b4a8e39e9.
Revert "formatters run better when $SAFE mode is on"

This is causing failures in Ruby 1.8.7, jruby, and ree

This reverts commit 576b82df34c60eb34662a96e56221e01cff35c6e.
Revert "Revert "formatters run better when $SAFE mode is on""

This reverts commit 713ad6f0533d86340dc2c25996e34a433d3f232c.
Revert "Merge pull request #609 from alexch/json-formatter"

This reverts commit 8e41f1ad5d3d39888ec8742a45671c8e7c30d653, reversing
changes made to 076d683e5c93858a50e6aa8ec51fb2c6291503cd.
Add `config.order = 'random' to the generated spec_helper.

- Closes #635
don't need redcarpet when running in jruby
delegate instead of alias from mocha adapter
refactor: rename method
update Changelog
bump to 2.11.0
improve automation for publishing to relishapp.com