Organize codebase for acyclic modularity

Improve understandability, maintainability and testability by
eliminating cyclic dependencies throughout the codebase.

Additional changes include:

 - Introduction of the AbstractBitsquareModule base class and
   implementations, providing a more modular approach to Bitsquare's
   Guice configuration

 - Separation of the entry point of the application into two distict
   `main` methods. See the new `io.bitsquare.app.gui.Main` and
   `io.bitsquare.app.cli.SeedNode` classes

 - Pruning of dead code, particularly the elimination of
   `*TestUIRunner` types and associated resources

 - Elimination of many static fields and methods in favor of proper
   dependency injeciton

 - Replacement of checked exceptions with unchecked exceptions where
   appropriate

See extended comments in the commit log for further details.