Rework GerritEventListener interface, only keep method with GerritEvent

Having one method per type of event is a problem because every time we want
to add a new type, we will break backward compatibility. Brought back
reflection removed a long time ago to allow GerritEventListener implementors
to define method taking a specific type as argument and this method will
be called instead when an event of the specific type is received.

Also clean up duplicated code related to event processing in GerritTrigger.
Encode ID used in REST endpoint URL

The Gerrit documentation says following:

  "All IDs that appear in the URL of a REST call (e.g. project name,
  group name) must be URL encoded."

As this wasn't done, project where the name was something
like "parent/project" didn't get messages from Gerrit.

The branch name can also have characters that must be encoded.
Update documentation link to latest release

2.1.4 is pretty old and there's some new operators in
(at least) 2.8.
Use constant instead of magic string

Use org.apache.commons.lang.CharEncoding.UTF_8 as
encoding instead of "UTF-8" -string.
Merge pull request #110 from hugares/gerriteventlistenerrework

Rework GerritEventListener interface, only keep method with GerritEvent
Merge pull request #111 from jyrkiput/change-id-encoding

Encode ID used in REST endpoint URL
Merge pull request #112 from jyrkiput/update-search-help-url

Update documentation link to latest release