factored out Lexer and Token classes

Moved the Lexer class into Lexer.{cpp|hpp}, and the Token, TokenPosition, and
TokenRange classes into Token.{cpp|hpp}. Currently they are part of the vhdl
library, but will probably move one layer up later, as both Lexer and Token are
language-agnostic, general constructs.

At a later stage, the Lexer should be streamlined to allow for faster parsing of
input files. A file containing ~1400 lines takes roughly 250ms to parse. This
could be made way faster was streamlined, i.e. read the entire file at once,
then iterated over each character.