Restore concurrent requires

When #8374 was fixed all requires were serialized, so one thread would
be blocked waiting for gem resolution (if any) and require in another
thread.  This is undesirable for JRuby, in particular.

The monitor protecting the RubyGems internals only needs to cover gem
activation and modifying $LOAD_PATH, not requiring files.

Now the monitor is released before calling the original Kernel#require
which allows other threads to require files without waiting for
RubyGems.

Fixes #640

See also #637