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.
Had to change the exports because the extension need to use ParseNode, ParseResult, and ParseFuncOrArgument.