document keyboard shortcut to add site/folder
Phase 2: switching to using story_hash index instead of compound unique story_feed_id/story_guid index.
Restore default whitespace to pre/code blocks
Merge branch 'master' into story_hash_2

# By Samuel Clay (70) and adriano petrich (1)
# Via Samuel Clay (3) and adriano petrich (1)
* master: (71 commits)
  Adding new task servers.
  Activating premiums immediately for stripe users.
  Adding X-server to headers to figure out request pinning.
  removing dependency to dop.client for common fab tasks
  Increase file descriptor limits with fabric.
  Opening up gunicorn for use by HAProxy directly.
  Naively connecting to real-time socket.io.
  Preventing socket.io buildups.
  Rewriting HAProxy config to include gunicorn and maintenance. Much better monitoring.
  Fixing HAProxy to use http headers so a 502 error code doesn't get served with a 200 status code. I mean seriously, WTF HAProxy?!
  Trying out a gunicorn haproxy backend.
  Re-upping 12 to 64 free feeds.
  Removing Redis state for socket.io. Too many open mongo connections.
  Referencing new secret hosts.
  Removing hosts.
  Adding dev hosts.
  Using new secrets repo instead of ignored files.
  Fixing homepage copy.
  Using redisstore for socketio.
  Forcing reconnection for socket.io.
  ...
Merge branch 'master' into story_hash_2

* master:
  Adding port handling for socket.io when not on www. Useful for dev and debugging.
Make sure to send the proper content-type with social feeds
make fabfile.py use requirements.txt

The '$(<FILE)' syntax expands to a single line, separating the lines of FILE by
spaces. This works on recent shells (means: not dash, busybox sh).
For more backward compability one could use '$(cat FILE)' or even '`cat FILE`'.

The new requirement.txt includes all optional dependencies (taken straight from
fabfile.py) and misses gunicorn and psycopgs2, as those are installed
separately by fabric.
(Better getting fast 90% of packages and some superfluous ones than none at
all)
Fixed API docs for /reader/river_stories

read_filter on /reader/river_stories defaults to unread, however the parameter wasn't even documented before on this endpoint.
Froze requirements to make installation a bit easier.
Merge branch 'master' into story_hash_2

* master:
  Double clicking the unread counts now marks a feed as read.
  Fixing log for non-requests.
  Fixing share bar for tons of sharers.
  Cleaning double the analytics.
  Reducing page load logging to only abre essentials.
Only show time breakdown when > 1 sec.
Merge branch 'master' into story_hash_2

* master:
  Only show time breakdown when > 1 sec.
Ramping down feed fetching until they can be handled.
Moving shared story unread recalc to background task. Will greatly speed up sharing.
Merge branch 'master' into story_hash_2

* master:
  Moving shared story unread recalc to background task. Will greatly speed up sharing.
  Ramping down feed fetching until they can be handled.
Fixing facebook posting.
Fixing Facebook image calculation.
Further turning down feed fetches until mongo is ready to replicate.
If requests.raw won't work, sut fudge it with a StringIO for now.
Turning down feed fetches.