REVIEW [NX-525] shared database support

https://issues.sonatype.org/browse/NX-525

also addresses:
https://issues.sonatype.org/browse/NEXUS-6698
https://issues.sonatype.org/browse/NEXUS-6619
https://issues.sonatype.org/browse/NX-601
Note that `ConfigDatabase.ProviderImpl` is a `@Named @Singleton Provider` which means that it will effectively be bound by Sisu as:
```
bind(DatabaseInstance.class).toProvider(ConfigDatabase.ProviderImpl.class).as(Scopes.SINGLETON);
```
following Sisu's @Named binding rules as described in: https://www.eclipse.org/sisu/docs/api/org.eclipse.sisu.inject/reference/org/eclipse/sisu/space/package-summary.html (see the note: "this is different to the normal Guice behaviour where singleton only applies to the provider itself")