[NEXUS-7657] Make rawcontent use ComponentStore

https://issues.sonatype.org/browse/NEXUS-7657

This gets rid of the direct orientdb/blobstore stuff and goes against the new ComponentStore.

Implementation note: With this change, AssetAdapters and ComponentAdapters are still registered automatically via sisu Mediators, but the storage classes are created lazily so we can be sure the requisite DatabaseInstance is initialized. However, note that we can't create them *too* late, because if a transaction is open against orient, it is not possible to make schema changes. So they are created by the new ComponentStore interface method, prepareStorage, so that components that need them to exist can request that they're created when the component initializes.  See RawBinaryStoreImpl.on(NexusInitializedEvent) for example. Together, this ensures that the underlying storage classes are created at just the right time, if needed. Making this a bit cleaner should be possible after NEXUS-7303 (support for @PostConstruct and @PreDestroy) is implemented.
Yep. I was also thinking of type safety in terms of the domain objects themselves. Like passing a MavenComponent into a method that knows how to deal with maven objects, versus a generic object that amounts to a Map<String, Object>.

But yeah, I think we make that more palatable with various proxies and helpers and whatnot if desired.

Thinking through the process of putting these things on the wire (either for import or export) as JSON, I think the map-based model you suggest is better. Also, moving away from type-parameterization allows query results to provide "mixed bags" of these things instead of a List<SpecificSubclass>. Similarly, the batch add method of ComponentStore would no longer need to require the whole sequence of components be of the same type.