Proxy EOF detection.

Issue NXCM-4864 revealed that pull request
https://github.com/sonatype/nexus/pull/697
is insufficient to handle case when proxy remote peer
drops connection unexpectedly.

NXCM-4864 reveals what exact exception is thrown by HC4
when "remote peer" drops connection unexpectedly. Inspecting
the exception also reveals it is not an `java.io.EOFException`
descendant, but descends directly from `java.io.IOException`.
Hence, changes in pull request
https://github.com/sonatype/nexus/pull/697
(that kicks in on EOFException) will never kick in (and
this case will be handled as "generic IO problem" and will
auto block remote peer too).

So, we introduced a "wrapper" around the HC4 stream, to
have it "translate" HC4 specific exception
into one that is recognised (and handled) by Nexus Core.
Moreover, as it is highly likely that other transports will
use other exceptions (descending or not from EOFException),
using this technique we could always ensure that this case is
properly handled by Nexus Core.

Here, newly introduced Hc4InputStream is meant to translate
the `org.apache.http.ConnectionClosedException` thrown by
`org.apache.http.impl.io.ContentLengthInputStream` read methods.
Plugin for BouncyCastle.

It serves multiple purposes:
* centralises presence of BC (now we have multiple ones scattered as plugin deps)
* centralises JCE registration/unregistration in one single place.

This only adds new core plugin and simple code that registers/deregisters it
and marks BC classes as "plugin shared" dependencies.
Applied pull req comments.

This is becoming now a "crypto plugin"
Also, event bus is used to consume and act upon events
instead of phased out event inspectors
Refactored

Lessen component count, and will try to be polite when BC is already
registered with JCE (well, obey and yell, as previous code was neglecting
this case).
Merge remote-tracking branch 'origin/master' into bc-provider-plugin

Conflicts:
	nexus-webapp/pom.xml
NEXUS-5472: WIP
NEXUS-5472: Added missing license headers to make CI build this
NEXUS-5472: modifier methods renamed to more appropriate ones.

And other smaller fixes.
NEXUS-5472: Javadoc
NEXUS-5472: Added UT for WritableEntrySourceModifierImplTest

While doing UT, simplified WL matcher a lot, and also modified
and simplified the modifier itself too (was trying to be too smart)
NEXUS-5472: Renamed things to better match their purpose
NEXUS-5472: License was missing
NEXUS-5472: Smaller fixes and comments
NEXUS-5472: Javadoc and comments
Merge remote-tracking branch 'origin/master' into nexus-5472-proxy404
NEXUS-5472: Multiple fixes combo

Those are:
* Added LocalWalkerStrategy UT
* fixed LocalWalkerStrategy, as nexus may leave empty folders on artifact removal (it does not enforce remote folder removal when delete over REST or UI the given file, but tasks like snap remover DOES delete empty parents) and it was gathering folders too, hence, creating "false" WL entries even if folder was empty, artifact not present, it was added to WL. Now, _files_ are scanned (downsize, walking will be slower!), but real content is added now to WL.
* aligned hosted repo WL creation (walk) and maintenance (offer/revoke), as the two was falling apart (deploying created full path lists while init or delete+update of WL created capped depth list). Now both behave same, as this is fine as only hosted repo WLs are maintained by Nexus
* separated local and remote scrape depths for real
NEXUS-5472: Javadoc on merging ES
NEXUS-5472: Shortcut WL update propagation

It was dumb to listen to our own events to propagate WL updates.
Shortcutting it, as WLManager handles that now (in private).
Merge remote-tracking branch 'origin/master' into nexus-5472-proxy404
Merge remote-tracking branch 'origin/master' into bc-provider-plugin