BCBREAK: Rename comments.node_id to foreign_key

- Add `model` column
- Create index
BCBREAK: Adding $model argument and rename $nodeId to $foreignKey
Refactor: Decouple plugin setup

- Extract Comments related method to CommentableBehavior
- Bind Comment belongsTo Node if plugin is active
Refactor: New event Controller.Nodes.view + CommentsComponent
Don't show Comments elements if plugin not loaded
CroogoStatus: Add new status types: 'approval'
BCBREAK: Signature change and some decoupling work

- Signature change for Comment::add(), CommentsController::add()
- Rename Comment::_spam_protection() to Comment::_spamProtection()
- Attempt to decouple Type from Comment
- Extract Type specific code to behavior with fallback if Taxonomy is
  not loaded
- Add $model argument to Comment::add()
- Simplify Comment::add() arguments with options array
Add Commentable::addComment()