Add initial infrastructure for migrations

- Migration script to rename article to articleURL
- Migration script to add articleTitle
- Migration script to update articleTitle from articleURL
- Add script to manage migration deploys
Install executable-only packages outside of the sandbox

The dependencies of our executable-only packages and our application seem to
conflict. We're unable to determine the root cause, but installing the
executable-only packages outside of the sandbox solves the issue.

This also means these packages can be reused across projects. If we assume there
aren't as strict version requirements, this should be a Good Thing.
Update cabal file for 1.4 dependencies

- Re-freeze dependencies
- Lift these constraints during executable install on Travis

Temporarily move cabal.config so the executable-only install is free to use the
latest versions possible. By also installing within a sandbox on Travis, we
solve the dependency issue the same way we do in local development.
Upgrade code base for Yesod 1.4

- Replace Yesod.Text.Markdown shim
- Remove deprecated sqlOnlySettings
- Use SqlBackend, not SqlPersistT
- Add YesodAuthPersist instance
- Remove deprecated giveUrlRenderer
New deployment procedures

- Deploying to staging is a normal push
- Deploying to production releases the current slug from staging
Add missing package in cabal.config
Use new buildpack

- Update entry in .buildpacks
- Update Procfile to expect binary in alternate location
Restart app as part of production deploy
Refactor application for new coding guidelines

- Line length, import sorting, etc
- Separate Model modules for each non-trivial data type
- Anything dealing with Request/Response should appear in a Handler or Helper
- Helpers should be about cross-cutting concerns, not model or handler-specific
- One Handler module per resource, not per URL
Use our fork of haskell-on-heroku
Add smtp-mail package
Add failing spec for notification recipients
Implement getRecipients
Implement getBody
Remove notification body test

- Testing the content is brittle and the only critical piece of logic is who the
  recipients will be
Implement email sending and logging
Split Notifications module, add sendgrid logic
Remove createComment'
Refactor, restructure, and add tests
Signature separator needs trailing space