Fix bug 892292: No middleware for fetch_snippets, fix cache headers.

Since fetch_snippets doesn't need any middleware to run for it to 
fetch snippets for the user, this adds a middleware that bypasses all
other middleware for that view only. This avoids an issue with Vary
headers being added to that view's response, as well as an unnecessary 
database query.

This also sets the default max-age for the view at 90 seconds instead
of 1, and adds a test to ensure the right cache headers are being set
for that view.
Don't show disabled snippets in public view and fix admin bulk save.

Bulk save in the admin was broken because it uses save_model, which
assumed there was a `locales` field in the form. However, the form
used for saving multiple snippets at once doesn't have this field and
caused errors. So, we update save_model to be able to accept forms
without a `locales` field.