Add a feature to automatically suggest reviewers for a given review request

Review Request #5029 — Created Nov. 26, 2013 and submitted — Latest diff uploaded

Information

Review Board
master

Reviewers

Using past review activity, suggest reviewers to a user posting a review request. This will look at:
- the frequency with which users have commented on / reviewed a file in the current review request's diffset.
- The recency of their reviews
- Whether or not they were targetted for review in the reviews they gave.

On the front end, clicking on a name in the suggestions adds to the target people list and pulls them off the suggestions, and hitting cancel puts them back into the suggestions.

Front end:
experimented with the front-end and made sure that everything behaves as I expected:
- clicking on a suggestion when not in inline-edit mode opens the inline editor and adds the suggestion to the list, removing from suggestions list
- clicking on a suggestion when in inline-editor keeps the inline editor open and appends the suggestion, removing it from the suggestions list
- hitting cancel on the people's field throws out the added suggestions from the inline editor and adds them back to the suggestions list.
- opening another field's inline editor while the people's editor is open and has unsubmitted changes from suggestions, then hitting cancel on the other inline editor. This doesn't affect the suggestions list at all, nor the people field's current inline Edit contents. Hitting cancel on the People's inline edit field then behaves as it should (described above)
- Hitting ok on the inline editor after it has been modified by suggestions turns off inline edit mode while reflecting the changes, and keeps the suggestions list unaltered, then turning it on and hitting cancel doesn't add back to the suggestions list the suggestions that were pushed to the editor before the save.

Back-end:
- manually queried and checked expected results (based on frequency, recency and targettedness of comments) for a few individual review requests and made sure that the reported results aligned.

Unit tests pass.