Phase 2: switching to using story_hash index instead of compound unique story_feed_id/story_guid index.
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.
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.
Merge branch 'master' into story_hash_2

* master:
  Only show time breakdown when > 1 sec.
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.
Merge branch 'master' into story_hash_2

# By Samuel Clay (10) and others
* master:
  Further pushing out feed updates.
  Using @dcramer's excellent getsentry.com for all exceptions. Turning off exception emails.
  Further pushing down feed fetches to handle load until db is scaled out.
  Scrolling code blocks.
  New task servers.
  Turning down feed fetches.
  If requests.raw won't work, sut fudge it with a StringIO for now.
  Further turning down feed fetches until mongo is ready to replicate.
  Fixing Facebook image calculation.
  Fixing facebook posting.
  Fixed API docs for /reader/river_stories
  make fabfile.py use requirements.txt
  Make sure to send the proper content-type with social feeds
  Restore default whitespace to pre/code blocks
  document keyboard shortcut to add site/folder
Merge branch 'story_hash_2'

* story_hash_2:
  Phase 2: switching to using story_hash index instead of compound unique story_feed_id/story_guid index.