Changes stemming for weekend talk with JD

Loosely relates to local storage improvements

Changes:
* Cleared up nullability of storage context: local is never null, remote is never null (unless a bug, hosted repo casted to Proxy and invoked getter for remote)
* Cleaned up "lazy" creation of storage context, caches and other stuff in Repositories (hosted and proxy)
* Moved thread management from registry (made it simpler) to proxy repo who's thread it is (as we introduced dispose)
* Added Override annotations for early warning (to ease refactoring)
* Removed unused setters from Repository interface
* Removed unused and unfinished task filtering
Shuffled around when things needing repo ID are created.

Originally, it was at wrong place, as no configuration existed yet
for the repo
UT used "illegal" mocks, having null storage context.
Stopping thread always.

As dispose is invoked only when repo is removed
from the system, but in tests, when JVM is not stopped
but new instance of nx is started, old threads left in
dandling causing OOMs
Using ComponentSupport, optimize import
Using component support
Deprecated resource store utils.

Only one method used in only one place, so moved it in.
Updated packaging mapper.
Deprecated smart wastebasket.
Removed MetadataManager inferface, as this made a mess here
Add OPTIONS handler method to PlexusResource

This will allow CORS headers (Access-Control-Allow-Origin) among other things in restful services.
[NEXUS-6027] kill OperationMode
throw propagate()
[NEXUS-6027] remove getUrlSnippet()
[NEXUS-6027] remove XStreamMarshaller
[NEXUS-6027] remove getUrlSnippet()
[NEXUS-6027] kill OperationMode
[NEXUS-6027] replace AbstractLoggingComponent with ComponentSupport
[NEXUS-6027] replace AbstractLoggingComponent with ComponentSupport
[NEXUS-6027] replace AbstractLoggingComponent with ComponentSupport