Factor S3 media uploads out to new provider system.

This introduces a new "provider" system which allows core pieces of
code to be swapped out for different hosting setups.
Media Provider: Add "filesystem" provider for local nginx.

This media provider is for simple single-server installations where an
HTTP server running on the same machine handles serving of the static
media files.

An appropriate setup with nginx is now the default in the new install
script.
POST_setappicon: Use VUploadLength.

This endpoint was missed when fixing file uploads after the
request.post -> request.POST deduplication fixup.
/prefs/apps: Make app icon URLs HTTPS friendly.
scraper_q: Gracefully degrade to thumbnail-only when no embedly.

Between the local filesystem media provider and this change, scraper_q
is workable after a default install now.
install-reddit: Ensure consumer-count.d is owned by the right user.
Add max_depth parameter to CommentPane cache key.
Make ListingChooser full-height on short pages.

The JS check in ListingChooser.initialize only takes care of the case
where the list of multis is longer than the body. However, when there
are very few multis *and* the page content is short, you get a weird
truncated listing chooser. This fixes that by setting a min-height on
body which works because html is already height: 100%.
Separate language used for translation from page language.
Use lang_override for all "en" variants.
Set the site when requesting a promoted link.

This lets us do over18 thumbnail hiding correctly.
Timeout for r.spotlight.requestPromo.
Allow sponsors to change nsfw status of promoted links.
Class for UserText textarea.
Textarea for promoted link selftext is rounded.
Make widths consistent in the promo-form.
Update campaigns when a link that should be live is approved.