Add support for remote API

This change adds remote API support. You can get the status of Gerrit connection using the below url:

$JENKINS_URL/plugin/gerrit-trigger/api/(xml|json)

Sample:

```xml
<pluginImpl>
  <server>
    <connected>true</connected>
    <frontEndUrl>http://localhost:8080/</frontEndUrl>
    <hostName>localhost</hostName>
    <name>gerrit1</name>
    <noConnectionOnStartup>false</noConnectionOnStartup>
    <sshPort>29418</sshPort>
    <timeoutWakeup>false</timeoutWakeup>
    <userName>foobar</userName>
    <httpUserName>foobar</httpUserName>
  </server>
</pluginImpl>
```

Also some small fixes:

* No keep plugin instance in PluginImpl
* Use WriteOnArrayList as server list (improve UI performance)

Maybe it is difficult to keep bc because LinkedList has List interface but no interface class for First/Last methods(e.g. getFirst/getLast, removeFirst/removeLast).

\@WithBridgeMethods can generate bridge method, but it is done without any type check. It means that incompatible cast from List to LinkedList can be accepted by this annotation.

Unfortunately, as far as we use LinkedList as return value, it is no good solution in Java standard concurrency helper...

* CopyOnWriteArrayList implements List interface only.
* Same as Collections.synchronizedList wrapper

But it is useful not to use synchronized methods in PluginImpl. So we can take the below options:

* Revert
* Accept this change
* Move server list and all synchronized methods to another class.

If possible, I want to allow this bc broken change. Because PluginImpl is not a exported interface.

WDYT?