[JRO] Raise and rescue topic not found error

Instead of checking for the topic existing in the
posts controller, push `find_by_slug` down into the
Topic class and raise a thredded-specific exception
that can then be rescued from the controller.

* Create Thredded::Error base exception, and
  Thredded::Errors::TopicNotFound
* Spec for `find_by_slug` tests for appropriate 
  raising of exception and that it eager loads
  user_topic_reads
[JRO] Post editing authorization

Features from the parent app bubbled up the fact there was no 
specification of whether a post was editable. This commit implements
checking for whether a user can edit a post.

User can edit a post if: 
* The user created it
* The user is an admin of the messageboard