Add comment feature to books and announcements

@houndci @cgruppioni @georgetmayorga
I think this opens you up to being haxxed. It's generally a very bad idea to process user input into arbitrary classes like this. Instead, I'd do something like this:

```ruby
def find_commentable
  Book.find_by(id: params[:book_id]) || Announcement.find_by(id: params[:announcement_id] || ....etc...
end
```

That code ensures that you're using only the classes you expect (e.g. what if someone submits `user_id` - then you're suddenly finding a User).