Distributed Lock

Closes #138
Add redis-server to travis services
Use Postgres 9.3 on Travis
Set REDIS_URL on Travis
Fix race condition pertaining to nil in DistributedLock

I wasn't checking if `@redis.get(@key)` returned a non-nil value, and `nil.to_i` is 0 which caused the following test to always succeed.
Keep track of post numbers
Post url using post number
Scroll to post number if included in route
Remove subforums with visited statuses
De-polymorphize visited statuses
Remove incorrect fixtures
Move UnreadForUser concern directly into model
Merge branch 'master' into post-numbers

Conflicts:
	app/assets/javascripts/client-prod.js
	db/structure.sql
Update client tests
Threads with visited status now track last read post
Link to a user's next unread post where possible
Add mark_as_visited_for to post model
Remove unnecessary method
Propogate field default to view
Merge branch 'master' into post-numbers

Conflicts:
	app/assets/javascripts/client-prod.js
	app/assets/stylesheets/post.css.scss
	app/views/notification_mailer/broadcast_email.html.erb
	app/views/notification_mailer/broadcast_email.text.erb
	app/views/notification_mailer/new_post_in_subscribed_thread_email.html.erb
	app/views/notification_mailer/new_post_in_subscribed_thread_email.text.erb
	app/views/notification_mailer/user_mentioned_email.html.erb
	app/views/notification_mailer/user_mentioned_email.text.erb
	db/structure.sql