store lexeme text in std::string

There was a bug in the lexer due to it's use of a constant-length c
string. It checked the length of input quote and vertical bar lexemes
to make sure that they would fit within the range allocated for a
lexeme (`MAX_LEXEME_LENGTH`), but it didn't check other lexemes, so
it would accept, for example, a production name that was any length
and would simply write past the end of the array. On accident this is
unlikely to happen, but it is a risk.

Change `Lexeme.lex_string` to a `std::string` representation, and make
necessary changes in `Lexer` methods. Move `MAX_LINE_LENGTH` into
`agent`, where it is referenced, and include agent in `output_manager`
to gain access to it. Note that the bug has only been moved from
`Lexeme` into other areas instead of being resolved (this will require
further attention).
rename lexer files to Lexer

in order to reflect class status.