[JENKINS-17850] Add multiple Gerrit server support

Refactor methods related to one Gerrit server to a new class GerritServer and
keep a list of GerritServer objects in PluginImpl.
Refactor all related classes and tests.

Change-Id: I11d3f0d694b3670e879a6ecf10513967603c6e13
Fix merge conflict.

Conflicts:
	gerrithudsontrigger/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/spec/DuplicateGerritListenersHudsonTestCase.java

Change-Id: I44da83088dc1f5e8754c59c0633a6914676ac1a7
Fix tests.

Change-Id: Id9032918ebc195b3ab4131ebb2cc10a279bfbc70
Move server list initialization to PluginImpl.load()

Change-Id: I654047037105e80547da08f7fcc23110d108daa4
Encode full commit message parameter as UTF-8 Base64

The full commit message may contain characters that cannot be
properly escaped.

To avoid this, encode the message in Base64.  Also make sure that
the text is UTF-8.

Change-Id: Iae0973886a4871acf041da420619887655dbfb29
Tidy up comments in GerritTrigger.java

Change-Id: Idc2c7fce752b3d7d4c62ab57616baba162721688
Merge Github master.

Change-Id: Iaa0bb645df5d411ac5c308071d205bd47a8de3d4
Refactor the GerritManagement page and add null checks.

Changes:
1.The GerritManagement page only shows the list of servers now.
The configurations for each server have been moved to GerritServer/index.jelly.
2.Add null checks for methods calling PluginImpl#getServer.
3.Use a LinkedList instead of ArrayList for GerritServers in PluginImpl.
4.Initial (yet disabled) code to eventually support server renaming
(See TODO comments in GerritServer#doConfigSubmit).

Change-Id: I1917c320b16bfe7270773ea4a851712b2350f573
Fix test error in ManualTriggerActionPermissionTest.

Change-Id: I248345fa30a1d89cf13ca0e2e6d1326954bfc105
Enable server renaming.

The jobs configured with the old server will also have
their configurations changed and saved.

Change-Id: Ice25698c2c61b680d540f21d288a747410c036ba
Fix empty verdict category list in "comment added" events.

Make verdict category dropdown update dynamically depending on selected server.

Change-Id: Ie829882724fb2141b1fdcaf2ca3fec4b7086a71c
Prohibit removal of the last server.

Change-Id: Ifbe6bf25b1bdd7b1940378d0d418563c2a5de374
Add null check for getServer in GerritManagement.

Change-Id: I668bc7a0a12c8baa53774c6d2e4fad54b9758d4d
Fix creation of new server from existing config.

Start and save server immediately after creation.

Change-Id: I8e47a1fedeadaa007a915876f7757f16279fca83
Add auto-completion to "Copy Server From".

Change-Id: I4f035dfaa57c9021bc9d739e8be2d02877be2656
Lowering log level of Notifying listener

The introduction of triggering of comment added has
caused the FINE loglevel to be close to unreadable.
Lowering the level to FINEST a.k.a. trace should
mediate that.

Change-Id: I33adf5471f5e8e5b66a748a663d48c3c26122729
Increase time-out limits to make tests pass more easily.

Move initializeListeners to avoid Admin Monitor problems

Change-Id: I52f52f3a8b4b7187433f1fb5b3242d1a02811d1e
Fix GerritProjectListTest to have no dependency on the tests execution order

Sometimes, the testAddProject is not first one executed and this is why the 2 other
test cases are failing. Implemented before and after methods to setup and teardown
anything required by the test cases so they no longer depends on testAddProject to
be executed first.
GerritTrigger.equals/hashCode -- don't use AbstractProject

AbstractProjects are very temporary and shouldn't be used for
comparison.  Instead, AbstractProject.getFullName() should be
used.

JENKINS-10709: multiple builds are triggered for one change in Gerrit
Fix Manual Query.

Change-Id: I8294900ee0db28f8ebce56184b186c5e407fba4c