lexan: convert LexicalAnalyser to have the InputRange interface.

Makes things a little clumsier at the moment but should enable a stack
of LexicalAnalysers to be used to implement a lexical analyser that
allows text to be injected at the current point i.e. implement concepts
like C's include files.

Signed-off-by: Peter Williams <pwil3058@gmail.com>