Simplified abstract plugin scanner for pre-loaded classes

Speed-up the development of external plugin providers by
automatically discovering and generating a Plugin
manifest and a basic auto-discovery scanner from a set
of pre-loaded classes.

This abstract class is intended to be subclassed by external
plugin providers.

Change-Id: I1d073434e4abfd6ccd1f50301cea1c3fec1ca279
Jar plugin loading refactor as generic ServerPlugin

Now that we have a fully pluggable ServerPlugin mechanism
with registered providers, there is no reason why the jar
plugins cannot be loaded using the same interface.

Removing all the custom code managing the jar plugins
and creating a new pre-defined JarPluginProvider.

NOTE: A limitation still exists on init-steps as they
can only be provided by jar plugins. This is due to
the fact that Gerrit init runs without having a fully
configured plugin loader and full set of Guice injectors.

Change-Id: I793570735376be3a40f3204af6e82820191caac6
Remove unused imports

Change-Id: Ifded80d3d68bf67803ca913399e455e90f19d115
Allow forcing mergeability check through the REST API.

Due to bugs like I8aeb0c87, some changes might end up with incorrect
values of the mergeable flag. They should normally correct themselves
as the branch advances, but provide an option to the /mergeable
endpoint for the impatient.

Change-Id: I961f9dccf67373946b153bb99f4fdac73f38cac4
Merge topic 'scripting-reloaded'

* changes:
  Jar plugin loading refactor as generic ServerPlugin
  Simplified abstract plugin scanner for pre-loaded classes
Update cookbook plugin to latest revision

- Add UsageDataPublishedListener example
- Add UploadValidationListener extension point example

Change-Id: I73891ab371289df63478827ef3728372aaa32783
Add change subject to output of change URL on push

When a new change / patch set is pushed, Gerrit prints out the URL to
the change as 'New Changes' / 'Updated Changes'. Include the change
subject into this output so that one can easily verify that the
correct commits were pushed. This is especially useful if many changes
are updated at once.

Output before this change:
  remote: Updated Changes:
  remote:   https://gerrit-review.googlesource.com/57524
  remote:   https://gerrit-review.googlesource.com/57511
  remote:   https://gerrit-review.googlesource.com/58153
  remote:   https://gerrit-review.googlesource.com/57510
  remote:   https://gerrit-review.googlesource.com/57522
  remote:   https://gerrit-review.googlesource.com/57512

Output after this change:
  remote: Updated Changes:
  remote:   https://gerrit-review.googlesource.com/57524 Add REST endpoint to get server summary
  remote:   https://gerrit-review.googlesource.com/57511 Require 'Administrate Server' capability to see server summary
  remote:   https://gerrit-review.googlesource.com/58153 Support flushing a set of caches at once via REST
  remote:   https://gerrit-review.googlesource.com/57510 Support flushing of all caches via REST
  remote:   https://gerrit-review.googlesource.com/57522 Support AcceptsPost on non top level REST collections
  remote:   https://gerrit-review.googlesource.com/57512 Support listing of cache names via REST

If a change subject exceeds 80 characters, it is truncated.

Change-Id: I72ef0621f40d85bc624a12df4af481afaa7af6a2
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
Improve message when removing a reviewer

When a reviewer is removed from a change also the votes of this
reviewer are deleted. This action is recorded as a change message:

  Removed the following approvals:

  * Code-Review-2 by John Doe <john.doe@example.com>

The term 'approval' is often associated with the highest vote in a
label which is needed to make the change submittable. When the votes
of a reviewer are removed this is mostly about negative veto votes.
This is why using 'approvals' in this context is confusing to users
and the message is now changed to say 'votes' instead.

Change-Id: I388f219d151a431ceeef497dd3d1b220f56e7b00
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
ProjectInfoScreen: Disable content merge option if fast forward only

If 'Fast Forward Only' is selected as submit type the 'Automatically
resolve conflicts' is disabled because the content merge option is
not relevant for 'Fast Forward Only'.

However if the page was loaded and 'Fast Forward Only' was selected as
submit type the 'Automatically resolve conflicts' was wrongly enabled.

Change-Id: I95722dd9ed1831b102e4a017c0fb9ded655e300f
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>