Feature/block state

The goal of this PR is to completely remove the use of QTextBlock.userData at highlighting to improve performances. TextBlockUserData will still be used for marker and checker panels and see its arguments reduced to the strict minimum (the list of attached messages and markers).

We moved some user data fields in QTextBlock.user_state: 
   - fold related data (fold level, fold trigger, fold trigger state)
   - cc_disabled_zone is now derived from the text char format (compare format to string, comment and docstring format)
   - the list of symbols for a block is computed dynamically

The various parts of the user state bitmask can be easily modified/accessed using the new TextBlockHelper api.

Note that the pygments syntax highlighter still uses TextBlockUserData, this is why it is so slow.