New lexer with make syntax.

The new lexer adds some flexibility in the syntax that vanilla make has,
such as:

- Comments and new-lines can be escaped with \
- The above means that all input to makeflow can be multiline.
- Single quotes are taken as literals.
- # does not have effect inside double quotes.
- Recursive expansion of variables.
- Shell expansion when a variable is defined with !=
- Uniform filename lexing. That is, the same rules apply for
  the list of requirements and redirection in command line.
- Variable substitution can be written as $VAR or $(VAR)

This commit is only about the lexing part, thus all of the above is not
yet available in the parsing stage.
Change makeflow to use the new struct lexer_book.