Experimental extensions implementation

This is just an experiment to see what extensions might look like and also to get a better understanding of all the nooks and crannies of the problem.
I'm not a big fan of what I did here.  This restricts extensions to defining a single mode.  I'd like to have an array and maybe call the array "argTypes" and each item in the array would be an object containing ```lexer``` and ```parseSpecialGroup``` functions.