REVIEW: Simplify nexus clients implementations by using siesta client

Add support for using siesta clients for submodules implementations.
It also suppresses the need for implementing a subsystem SubsystemFactory / subsystem.

The following algorithm will be used to create a subsystem:
1. Will look up a specific SubsystemFactory
2. Will lookup up an implementation of subsystem by using guice (if guice is available)
3. Will automatically create an implementation of subsystem using siesta client if subsystem interface has at least one method, or face or any extended faces marked with @javax.ws.rs.Path

https://bamboo.zion.sonatype.com/browse/NX-OSSF7