Fix broken/missing docs and behavior for the new validation API.

The new validation API was missing documentation. While adding it, I
noticed a few problems with how the API was being represented.

The resource name "diffs" collided with the other "diffs" resource, and
overwrote the URI template in the root resource. Resource names should
be unique, and more specific, so I renamed this to "diff_validation." I
also got rid of the mimetype, letting it build upon the new name (and
fixing some oddity with the resource not properly encoding in XML, for
some reason).

I also noticed any client following the link from /validation/ to
/validation/diffs/ would get an error, since there's no GET handler. A
proper REST resource should provide some representation. So, we provide
a payload containing the typical links for getting/posting to the
resource.

I also fixed up some documentation issues, some doc generation
issues with singletons, and added the pages for the validation resource.

Note that this does change the payload key for the diff validation
response.
Move diff expand/collapse support into the new DiffReviewableView.

The resulting code is actually cleaner than the old code, because we
have more context to work from, instead of having to embed a bunch of
stuff inside the links.

There's now unit tests that ensure our expand/collapse logic works
correctly.

It also fixes a regression in collapsing that was introduced in the
original DiffReviewable model that was pulled out early on in the
JavaScript refactoring.

This is the last work needed before we can move the DiffComment
support over.
Provide ReviewRequests and Reviews to reviewables and comment blocks.

Reviewables and CommentBlocks now take 'reviewRequest' and 'review'
attributes, instead of having to call out to gReviewRequest.

The 'reviewRequest' attribute is required, but 'review' is not. If not
provided, AbstractReviewable will get/create a draft Review object from
the ReviewRequest. These two parameters are now required.

Reviewables also now have a convenience function for creating
CommentBlock and adding them. This will do the work of passing along the
ReviewRequest and Review to the CommentBlock instance.

Existing Reviewables and CommentBlocks have been updated to work with
these changes. External ones will need to be changed.