[JENKINS-20392] Fix "Recent History" for merge jobs.

To compute the recent-history, jenkins uses a hashmap of branch-names
and commit-ids. The bug has two sources:
1) To fill the hashmap, jenkins uses only the branch-name and
commit-ids of those commits, that triggered the build. The
merge-commits created by jenkins are ignored (see
BuildData.java#L129).
2) To calculate the "Recent Changes", jenkins searches for the
branch-names of the commit, that was built. But jenkins considers the
merge-commit not part of any branch (the call to getRevisionsForSHA1
in PreBuildMerge.java#L93 returns a Revision without associated
branches).

The patch fixes this bug by 1) including the branches of the current
commit in the recent-changes-hashmap and 2) associating the current
commit with the correct branch-name.
Sketching SCM based on Job/Run.
Implemented 'Changelog to branch' extension
Compiles at least.
Using newer core changes to make GitStatus potentially work.
Use TaskListener rather than BuildListener for SCM methods.
Adapted to minor core changes.
Signature change on checkout.
Do not create a zero-length changelog.
Compilation fix.
Test compilation fixes.
Now on 1.568.
Make sure the RepositoryBrowser is associated with a ChangeLogSet so we do not need to go back through the build and SCM to find it.
Seems we may also need to declare an explicit dependency on mailer-plugin.
Ability for project-changes.jelly to handle multiple ChangeLogSet’s per build.
Simpler and more flexible to use changeset ID as the anchor.
This allows multiple changelogs to be shown in a single page.
Implementing guessBrowser, so far limited to GithubWeb.
Should trigger polling at most once per project.
Deleting apparently senseless file introduced in d98a86c by @ndeloof.
Commenting out assertions that fail in 1.521+ due to improved core behavior from JENKINS-18407.