REIVEW: [NX-518] Orient database manager

This PR addresses the following issues:

https://issues.sonatype.org/browse/NX-518
https://issues.sonatype.org/browse/NX-519
https://issues.sonatype.org/browse/NX-542
i've noticed a lot of catch IOException...Throwables.propagate boilerplate in the code. why bother having our own methods (interface-defined or otherwise) declare that they may throw IOException if consumers are just going to translate them to unchecked most of the time anyway? personally would rather see IOExceptions turned into unchecked exceptions earlier so the callers don't all have to worry about wrapping-and-throwing.