[bug 743775] Add lazy load script to landing pages.
[Bug 706479] Fix in-page anchor links not working with lazyloading images
[bug 740431] Add STATIC_URL to settings and collecstatic to deploy script.

* Leaving ADMIN_MEDIA_PREFIX until we have /static/ set up on prod.
* Add `static` to .gitignore.
[bug 741780] Convert forums/tests to use model makers.
[bug 737210] Limit the Question topic to 160 characters.
[bug 740902] Discount questions from inactive users from KPI metrics.

* Verified with updated tests.
Update deployment docs
[bug 712069] Add logarithmic retry to indexing

This adds logarithmic retry to index/unindex_task. If they fail, they'll
get retried periodically rather than just fail and die like they do now.
[bug 726037] Combined solved and responded graphs.

* Refactored 2 API calls into 1.
* Added a series for # of questions to the chart.
[bug 726037] Combined contributor count graphs.

* Refactored 3 API calls into 1.
* Now graphing KB, AoA and Support Forum contributors in the same graph.
[bug 743995] Fix READ/WRITE in es search admin

If an index was both the read and write index, the search admin page
wouldn't state as such.

Now it does.

Plus I fixed the logic so it's clearer in the land of Django templates
where there is no elif. Looking forward to 1.4.
[bug 739794] Fix index prefix

So... -dev and -stage share an ES cluster and the problem that creates
is that it makes it impossible for us to test production deployments
on -stage without also hosing -dev.

What this does is changes the nature of ES_INDEX_PREFIX. Instead of
using it to filter out which indexes are pertinent to SUMO on a given
server, we now prepend the prefix to the index name. This allows us
to have two servers with different prefixes with the same ES_INDEXES
and ES_WRITE_INDEXES and the resulting index names will be different.
It also allows us to change the ES_INDEXES and ES_WRITE_INDEXES for
a deployment that requires a reindexing and everything should work
on both -stage and -prod.

This also moves the Sphilastic code from oedipus to kitsune because
I was sick of changing it in oedipus and then updating kitsune with the
new commit.

This also includes a new version of elasticutils that allows us to change
the way the index name is calculated for an S.

Also, I did some paragraph wrapping by accident and that's part of this
commit, too.

As a side note, instead of fiddling with this and working around the fact
that elasticutils wants to be clever about index names, I wish I had reworked
elasticutils so it was less clever and more useful. But that is a story for
another time.
Tweak search admin page

This does three things:

1. pulls Records from uncached because when they were cached, then from
   the admin page you couldn't tell if the task didn't kick off or if
   you were getting cached data.

2. moves Record creating out of the try/except block.

3. if the process fails, it updates the Record so we know it failed. we'll
   get an email with the real data, but this is very nice for historical
   reasons.
[bug 745473] Fix typo

pyes switched from indices to indexes (or vice versa--I can't remember).
Point being that we were using the wrong one the result of which being
that it used the default index created with the ES object which calculates
the index name differently. Ugh.

This fixes that by changing the argument from indices to indexes. Now it
uses the one calculated in get_documents and all is well.

This also adds a test for get_documents.

And while doing that, I tidied up the import statements.
[bug 735750] Update font styles.
[bug 699239] Bubble "update needed" to top of list

Fixes Template readout on the localization dashboard such that templates
that need translations get bubbled to the top of the list. Previously,
you'd have to click on the "All templates..." link to see them all to
see whether any translations needed updating. Lame.
Tweak template translation status sorting

This sorts by whether it needs a translation as well as the status
class. Thus the important stuff is on top, the less important stuff
is next, and the stuff that's all fine shows up last.
[bug 690610] Fixes faux "fine" fact

This fixes the edge case where a translated document only has revisions
that were reviewed and rejected. Previously, that translated document
would show up as the "hey--everything's super!" green circle. Now it
shows up as the daunting "yo! i'm untranslated!" red triangle.
[bug 727714] Discount askers replies when counting contributors (KPI).

* When an asker replies to own question, the reply will not count towards contributions.
Refactor API calls in tests. DRYer