[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.
So the use-case is for java api to expose custom attributes?  Would custom logic be here in some cases too?

I'm just thinking this could be an antipattern to expect each format to need to provide a sub-class, or need to propertly get generics signatures or cast.

The current NX 2 framework suffers from this, with need to sub-class and ends up with formats needing lots of things like this:

https://github.com/sonatype/nexus-oss/blob/master/plugins/osgi/nexus-obr-plugin/src/main/java/org/sonatype/nexus/obr/proxy/ObrHostedRepository.java

For "normalized compnoent" api, seems like exposing a general means to expose these sorts of properties would be better at the cost of not having a java method like getDownloadCount() but needing to getProperty("downloadCount", Integer.class) or something along those lines.