`DSL.reset_application` resets the `application` global back to `nil`.

This should allow creating multiple runner objects, for different
region observers, within the same `JRubyEnvironment`.
Break out `SharedJRubyEnvironment`, `SharedRunner`.

This lets us share `JRubyEnvironment`s and askari runner instances
across region observer instances.  Things are reference counted with a
gross lock to eagerly clean things up.

Reference counts for jruby environments are tallied by the containing
jar name. Runners are tallied by the jar name and the askari
application name (the `askari.name` parameter.)