Refactor capabilities and fix bug

There was a bug with capabilities not being initialized when they were
used due to the server being contacted after diff generation. The
server is now contacted and the capabilities downloaded before a diff
is generated. This makes it that post-review must contact the Review
Board server even when only generating diffs, so diffs may no longer
be generated offline.

The way capabilities were passed to the SCM tools needed to be
refactored to support the new rbt commands. Capabilities were being
attached to the server object and being passed to the tool, but since
the server object is no longer present in the new commands this had to
change. The Capabilities object itself is now passed directly to the
tools.