Reorganized packages a bit. Fixed a bug in the Lexer where hasNext() would return true even though the Reader had reached EOF. New implementation involves an implicit next() call, storing the return value, and then returning if the return value is null or not. This is not ideal, but the only way to check if there is another token.