Add support for namespaced suites for JavaScript unit tests.

Unit tests using Jasmine consist of files each wrapping a series of
tests and definitions in one big describe() call. For organization,
we've been using the convention of namespacing these, in order to see
whether a test suite is part of, say, the API resources code, or the
diffviewer views code, allowing for easily searching on the page.
However, this still makes it hard to run a subset of tests, when they
span multiple files.

This introduces a new Jasmine utility library, jasmine.suites, which
allows us to replace that big describe() all with a suite() call. This
will generate describe() calls for us, reusing existing ones for
previously registered levels of the namespace tree. The result is that,
instead of running all tests to see if all resource tests pass, we can
now just run the "resources" suite independently. It's equivalent to
moving all tests into one big file and wrapping the resources tests in
its own big describe() call.

This utility library will be released externally as its own independent
module, but I'm putting it here for review purposes for now.

Reviewed at https://reviews.reviewboard.org/r/5727/
Use jasmine.suites for all Review Board JavaScript unit tests.

This switches all our unit tests to use the new jasmine.suites utility
library. It breaks down all the '/'-separated paths for each file's test
namespace into test suites and combines them to make it easier to suites
spread out across files.

All existing suites are placed under a 'rb/' namespace, which will make
it easier to distinguish Review Board tests from Djblets or other
modules.

Reviewed at https://reviews.reviewboard.org/r/5728/
Fix an AttributeError in the github post-receive hook.

Sometimes, the payload for the post-receive hook doesn't have a ref name. I
believe this occurs when pushing things other than refs like tags or branch
heads. In this case, we don't want to try to call None.startswith().

Trivial fix.