Refine reviewer assignment logic
This should have two net effects:
- If a patch is submitted by someone other than the author, add them as a reviewer
- Remove the patch submitter from the list of eligible reviewers from MAINTAINERS. This has the knock on effect that if the author is the only maintainer, then the patch can be assigned to a knowledgeable person for review.
The file was refactored to avoid adding more klunky globals, and a test mode was built to make it easier to test the logic.