Better messages for custom annotations

Adds secondary way to create TraverserDefs that gives you ability to
customize your message with data about AST element which matches the
description.

Also changes API of TraverserDefs' to hide implementation details - now
one can create new instances only using 'apply` methods on companion objects.
Highlighting for method calls mutable collections

Needs some better icon, but I'm not good at it.

Toggle on/off feature in next commit.