Refactor to a clean separation of concerns

Also, I've made use of promises to simplify error handling and clean up
the code. Overall, there are more lines now, but this is mostly because
of my heavy commenting.

Tweets are now trimmed before being saved as well.