Factored out @post.revise into a new PostRevisor class

Hey guys,

I noticed that the `revise` instance method of the `Post` class was big, long, and hairy.  

I decided to refactor that method into its own class, and then I cleaned up that class to be much more readable and maintainable.  None of the method signatures have changed, and all specs pass.

I have already signed the CLA.