Anti-evil features in preparation for user-creatable streams.

This is a batch of core anti-evil features that I feel are necessary before user-creatable streams are allowed. 

* A couple of tweaks to the discussion sidebar: removed and deleted posts won't be shown anymore and a data attribute can be used to override if a bad thread is put in.
* Contributors are now invited like moderators rather than directly added.  There's a quota on the maximum number of invites that can be outstanding at any given time.
* Events can be reported for breaking the sitewide rules. An admin interface is provided to view the reported events, counts by type of report, and to ban/approve them.  Banned events are not visible to users.
* Admins can create events from the UI.

![output](https://cloud.githubusercontent.com/assets/338853/3206860/89916b86-edcf-11e3-8086-23f4b0e59b91.gif)

I would like to roll this out as soon as possible (the weekend notwithstanding) to pave the way for user-creatable streams as soon as the end of next week (world cup).

:eyeglasses: @chromakode @umbrae @Deimos 

Notes: 

* there's some JS in the templates. This was deliberate to keep stuff that will never be used by non-admins out of the big bundle to save download time)
* I split the controllers up to separate files in the second to last commit. this makes the diff pretty hard to read.  Recommend reading separate commits.
Ah. I guess both Python and JS suck, then.

Though the typical "make diffs simple" argument doesn't apply here, since kwargs always come last.