cut monitor entry / exits in half on "happy path" requires

Before this change RUBYGEMS_ACTIVATION_MONITOR would enter and exit
twice for every call to require.  This commit pushes the "exit" call
outside of the `ensure` block to the `rescue` and unlocks in the
appropriate place.  Eliminating the effectively "global" unlock in then
`ensure` block allows us to lock and unlock once during happy path
requires, and only lock / unlock twice when `gem_original_require` fails
and we need to attempt to activate the gem.

Here is a test to demonstrate the problem:

```
require 'rubygems'
require 'tempfile'

moncalls = []
trace = TracePoint.new(:c_call, :call) do |tp|
  if tp.method_id == :mon_enter
    moncalls << [tp.defined_class, tp.method_id, tp.path]
  end
end

f = Tempfile.open(['foo', '.rb'])
f.write "true"
f.close

$: << File.dirname(f.path)
file = File.basename f.path, '.rb'

trace.enable
require file
trace.disable

p moncalls.length
```

Before this change `moncalls.length` will return 2, after this commit,
it returns 1.
add a test to demonstrate concurrent require support
make sure to exit the monitor before raising
Fixed spelling.
Merge pull request #952 from pmodin/spell_fix

Fixed spelling of `gem update --help` [ci skip]
Improve messaging for conflict errors

Previously conflict errors looked something like this:

    Activated a-2 via:
      a-2 (= 2)
    instead of (= 1) via:
      user request (gem command or Gemfile)

This is very difficult to read and I do not know what is going on here.

Now the conflict errors look like:

    Activated a-2
    which does not match conflicting dependency (= 1)

    Conflicting dependency chains:
      a (= 2), 2 activated

    versus:
      a (= 1)

Which I find much easier to read as I can tell what is going on now.

Part of #944
Add #952 to History
change condition of YAML engine for Psych
rescue load error for Gem loaded.

backport from https://github.com/ruby/ruby/commit/cc02a4ab7b71215de89c6bcfddc2fb2ef6f587be
Merge pull request #959 from hsbt/change-condition-of-psych

Change condition of YAML engine for Psych
Merge pull request #960 from hsbt/rescue-gem-loaderror

Rescue load error for Gem loaded.
backport r46144 from ruby/ruby trunk.
backport r46145 from ruby/ruby trunk.
backport r46636 from ruby/ruby trunk.
backport r46640 from ruby/ruby trunk.
backport r46641 from ruby/ruby trunk.
backport r46146 from ruby/ruby trunk.
Merge pull request #951 from tenderlove/drop_locks

cut monitor entry / exits in half on "happy path" requires
Add GitSpecification#pretty_print
Add LockSpecification#pretty_print