Return list of all excluded PRs in the merge command info log

- run_filter() now returns a reason together with the filter status
- unit tests have been fixed accordingly
- status-excluded PRs are now included as part of the excluded PRs section
Return empty string in merge_info() is candidate_pulls is empty
run_filter() should only log and return the sets intersection