Introduce OfferRepository interface and TomP2P impl

This change begins the process of breaking up the monolithic
MessageFacade abstraction into smaller, cohesive Repositories (in the
Domain-Driven Design sense of the word) that abstract callers away from
networking details.

It also begins the process of restructuring the msg.listeners package,
such that individual *Listener interfaces are co-located with their
respective Repositories
Replace AddOfferListener Result/Fault handlers

This change begins the process of simplifying the trade protocol by
eliminating extra callback layers such as AddOfferListener and task
layers such as PublishOfferToDHT in favor of calling directly into
Repository interfaces.
Move generic *Handler types to new util.task package
Rename *Handler methods
Rename methods used to implement *Handler lambdas
Inline CreateOfferCoordinator#onFailed
Replace VerifyOffer class with Offer#validate method
Inline CreateOfferFeeTx#run into CreateOfferCoordinator
Inline BroadCastOfferFeeTx#run into CreateOfferCoordinator
Remove unused MessageFacade from CreateOfferCoordinator
Remove offer creation recovery from CreateOfferCoordinator

Recovery was never fully implemented, and removing it dramatically
simplifies things. We can return to this with a proper analysis of
finite state machine libraries when the time comes.
Merge branch 'master'

Conflicts:
	src/main/java/io/bitsquare/gui/main/trade/offerbook/OfferBook.java
	src/main/java/io/bitsquare/msg/TomP2PMessageFacade.java
Extract isSuccess(BaseFuture) method into util class
Introduce io.bitsquare.offer.tomp2p package
Introduce io.bitsquare.msg.tomp2p package
Optimize imports
Introduce app.gui.MainModule
Move io.bitsquare.{network=>util}.tomp2p.BaseFutureUtil
Rename io.bitsquare.{Abstract=>}BitsquareModule
Merge branch 'wip-cbeams'

Additional changes during the process of isolating TomP2P. High-level
changes include:

 - Beginning to break up the monolithic MessageFacade into modular
   repository classes, starting with the OfferRepository interface and
   its TomP2P implementation

 - Major refactoring of the CreateOfferCoordinator class, eliminating
   the never-completely-implemented resume logic. This class still needs
   quite a bit of work, but it's now considerably simpler than it was

 - Refactoring the Node and BootstrapNode types for greater clarity and
   ease of use

 - Most classes that use the net.tomp2p API have been moved into tomp2p
   subpackages, e.g. io.bitsquare.offer.tomp2p. Classes within have been
   made package private wherever possible.

 - The Guice module structure has evolved. For example, note the
   relationship between offer.OfferModule and offer.tomp2p.TomP2POfferModule,
   and note how the latter is consumed by app.AppModule. This arrangement
   provides for clear contracts as to what is required to assemble a
   functioning Bitsquare application, while allowing implementation-specific
   modules to be swapped in and out with ease and still allowing
   implementation-specific classes to remain package-private.

See extended commit comments for further details.

* wip-cbeams:
  Rename io.bitsquare.{Abstract=>}BitsquareModule
  Move io.bitsquare.{network=>util}.tomp2p.BaseFutureUtil
  Introduce app.gui.MainModule
  Optimize imports
  Introduce io.bitsquare.msg.tomp2p package
  Introduce io.bitsquare.offer.tomp2p package
  Extract isSuccess(BaseFuture) method into util class
  Remove offer creation recovery from CreateOfferCoordinator
  Remove unused MessageFacade from CreateOfferCoordinator
  Inline BroadCastOfferFeeTx#run into CreateOfferCoordinator
  Inline CreateOfferFeeTx#run into CreateOfferCoordinator
  Replace VerifyOffer class with Offer#validate method
  Inline CreateOfferCoordinator#onFailed
  Rename methods used to implement *Handler lambdas
  Rename *Handler methods
  Move generic *Handler types to new util.task package
  Replace AddOfferListener Result/Fault handlers
  Introduce OfferRepository interface and TomP2P impl