Use "six" to abstract dictionary iteration and callable for python 2/3

I'm starting to work on porting our codebase to be compatible with both python
2 and 3. In python 3, items(), keys(), and values() are all iterators by
default and the old iter*() methods are gone. The "six" library includes
abstractions to handle these.

In addition, for some strange reason 'callable' is gone in python 3.0 and 3.1.
They brought it back in 3.2 (which may be a reasonable minimum), but for now,
to get the 2to3 tool to shut up, I'm using six's abstraction for that as well.

Testing done: Ran unit tests
Reviewed at https://reviews.reviewboard.org/r/4895/
Move review request draft banner logic into new classes.

This moves all the logic for dealing with draft banners into a set of
new classes in ReviewRequestEditorView. These will allow
ReviewRequestEditorView to dynamically create these banners, instead of
requiring a page reload.

Right now, a page reload is still used, so as not to make this change
any larger than it already is. Dynamic updating will come in a future
change.