Docs updates

* Splits the docs into three sections---trying to reduce the "omg!
  there are a million sections!" overwhelming feeling
* Moves the test-related things to the tests chapter so they're all
  in one place
* Turned "coding" into "conventions"---that's what it really is.
* Fleshed out the git commit message conventions---it keeps coming up
  and we pointed to a guide which pointed to a guide and the links
  were buried in both places.
Remove dead code

This nixes a bunch of dead and work-around code from the Sphinx days.

* ES uses "_score" instead of "@rank" internally
* we no longer use object_ids
* we no longer need the group_by no-op

I also added a note about query_fields--we're only using that in the
bucketed search view and suggestions. We should nix that, too.
[bug 774761] Use unicode when truncating JSON.

Before, when JSON was truncated that contained unicode, the unicode
would be represented as escape characters when calculating how much to
truncate. The string to be truncating though would still be represented
as a unicode string, so

Example: The dictionary {'pi': 'π'} would be serialized as '{"pi":
"\u03c0"}', which 16 characters, instead of 11 if it were represented as
unicode. The truncation happens on the original string, which has not
been encoded as escape characters. If the limit is 12 characters, then
the truncation goal would be to chop of 4 characters, which are not
available (since it is only a single unicode character), causing an
error to be thrown.

This commit add the parameter ``ensure_ascii`` to turn this behavior on
or off. It is off by default.
Merge branch 'bug-774761'
[Bug 760744] Update bleach and py-wikimarkup.

Upgrade Bleach to v1.1.4 (latest stable) and py-wikimarkup to a
compatible version.
[bug 767967] Auto-refresh page when reindexing
[bug 768226] Implement m2m product field

This adds a products field to wiki Document which is a many-to-many
with the Products table.

It was tricky because we used "products" in the form and then had
some code to move things to tags. I had to rename that form field
to "product_tags" in order to fix a bunch of issues that adding
the model field created. Then I had to carry the product_tags form
field name change through the code base.
[Bug 701385] "Update" questions only when answered.

Previously questions would have the `updated` field set to
`datetime.now()` when ever `Question.save()` was called, unless
`no_update=True` was specified. This caused it to move to the top of
question listings, which is not desired. The only time a question should
be moved to the top is when it is answered, so this changes the default
behvior to *not* update the `updated` field unless `save` recieves a
parameter `update=True`. The `Answer` model has been similarly modified.

Tests have been added/modified to assure that this is the case, and I
looked over existing code to make sure anything that interacted with
`Question.updated` was adapted.
[bug 775671] Fix migration 151

I'm not sure why this works on production databases, but doesn't
work on brand new databases, but this one line fixes it. The problem
is that a fresh database doesn't have a django_content_type for
redirect, yet.
Bug 772448 - Filter username from AoA results
bug 775332 - a11y: bold sender names in message listing

a11y: Make sender names bold in message listing on SUMO
[bug 776014] Admin page for investigating issue

This adds a thrown-together admin page to investigate the possibility
that live indexing isn't working correctly. It shows the last 50 wiki
documents indexed side by side with the last 50 wiki documents with
revisions that were approved. I think showing these side by side
would show whether there were things that weren't indexed that should
have been and may shed some more light on what's going on.
[bug 766534] Make AoA stats more motivating