Split the API test suites into Item and List classes.

For organizational purposes, and to make it easy to select a particular
set of tests, the API test classes have been split into two. There are
now resource list tests in each test file (all named ResourceListTests),
and item tests (ResourceItemTests). By keeping the same name, there's no
guesswork. It's easy to just run a set of tests in a resource's test
file.

While in here, I removed some usage of test_scmtools from the new
classes, which were not really needed.
Return better output on webapi doc parse_text failures.

When docs are missing from a class or function, parse_text will fail
accessing a function on a None. That's not useful, and the error output
doesn't tell us what happened or where.

Now, most callers provide a 'where' string that's used for any assertion
messages to better let us know what was missing.
Pull out diff-related data into a "diff context" object and initialize models from it.

The diff viewer needs a bunch of bits of data, which we render in a django
template as info in a <script> tag and then consume from javascript. This
change centralizes all of that info into a "diff_context" object which is
rendered using the json_dumps filter tag. This object is then consumed by a new
DiffViewerPageModel, which will parse the high-level object and create/update a
bunch of child models, which are then consumed by the various views that make
up the diff viewer UI.

Coming soon, we'll be able to consume this diff context either from the
javascript rendered into the template, as well as when it comes from an API
payload.

Testing done:
* Tested various pieces of the diff viewer UI to make sure that the initial
  data was still correct.
* Used this in conjunction with other changes that load different parts of the
  diff viewer without reloads.
* Ran unit tests.

Reviewed at https://reviews.reviewboard.org/r/4618/