Fix compatibility regressions with Review Board 5 and Python 3.

Review Request #12440 — Created July 6, 2022 and submitted — Latest diff uploaded


rbintegrations was no longer working with Review Board 5, for a couple

First, it used deprecated imports that Review Board 5 no longer
provides (as of this change, though that removal is being reverted
for now). These were attempting to import
reviewboard.integrations.Integration. We now use the
reviewboard.integrations.base.Integration import instead.

Second, we had calls in CircleCI to Django's deprecated
urlquote_plus() (which now just wraps quote_plus()) that were
failing due to passing in a Unicode string when a byte string was
expected. We now pass in a byte string.

In the process of fixing the urlquote_plus() issue, I found we were
convert a None value into the string 'None'. This seems to have been
a mistake, except the unit tests were matching that. I suspect this was
more a result of copy/paste than deliberate design.

This has been updated to just convert to an empty string and check
against that, which isn't really a whole lot better, but it's at least
more likely to trigger some meaningful error on CircleCI. A task has
been added to track this.

All unit tests pass.