Merge remote-tracking branch 'origin/github/rinrinne/dev-3.0' into stable-2.10

* origin/github/rinrinne/dev-3.0:
  Remove unused import and annotation
  Put exception message to logger
  Rename ChangeWorker to EventWorker
  Apply multibinding to Solver
  Rename RabbitMQManager to Manager
  Apply Provider pattern to SessionFactory
  Fix shutdown channel/connection logic
  Fix close logic for session
  Fix shutdown session
  Apply Guice Multibinder to Section injection
  Add Guice multibinding extension library
  Update gradle-shadow plugin to 1.2.1 then fix build.gradle
  Update git ignore pattern
  Some improvements
  Change Solver structure
  Decoupled normalize() from fromConfig()
  Structured configuration classes
  Cleanup codes
  Create some packages then move classes
  Roughly support multi config
  Add MessagePublishers to listen ChangeEvent
  Add dependency: commons-io
  Get plugin name then assume config filename
  Remove unnecessary codes

Change-Id: If41294c035f5bc3cdd658c686134acc30f36e184