Change controller architecture.

No more controllerMode.
This is a simple list of controllers in the config.

No more readOnly/readWrite controller.
Each controller must check is the buffer is readonly or not.
add a bind MasterCommand to add and remove binding dynamicly.
Do not bind tags to root (.) but on rather on self (self._w)
SubCommand can be indexed in MasterCommand
add "selection" event when selection changes.
menu configuration is now in the config. There is a global menu.
far better way to display line numbers
highlight text once the text is set. Not when document is added.
Load the document after adding it.
Move encoding information in document source instead of in buffer.
optimize rangeInfo performance

- regex are calculated once for all
- No copy of content
- add a fast_parse_text function that do not care of possible already
  known section (for first parse)
update how line and range infos are displayed (better performance)

- bissection search to find the first section to start from.
- better handling of displayed items in canvas.
end mark now corresponding to the last position, not the one after.
adddelchar, calculate_distance use now tk equivalent when it is better.
update setup.py
update .gitignore
Module discovery now use setuptool entrypoint.

- Modules need to be defined as entrypoint
- Modules are now classes that inherite from BaseModule.
All events use session.eventSystem as source. No more 'local' eventSource.
auto bind method "on_*" of  a module.
Add a event "currentChanged" spawn when the current document is changed.