Keyboard shortcuts + Rewrite

Besides obvious - provide definable keyboard shortcuts for particular snippets, this is also a complete rewrite of the extension files. Code has been split into more files and snippet insertion algorithms have been rewritten.

In old codes line is split into parts and removed from document, then a completely new line(s) is inserted to the place of the old one.

In new codes, line is no longer removed - instead the arguments are collected and only the parts that are actually used for the snippets are later replaced on the same line. As a result of this, you no longer see weird steps when doing Undo (Ctrl+Z) after inserting a snippet.

I hope I haven't introduced any new bugs and we can talk about the new code logic if you'll have time to go through it.

This was originally made from about 30 commits so I squashed it into two because nobody would ever go through them step by step.