action: add quoted string and back slash handling to lexical analyser

Add the ability to parse strings quoted with ", and also add the
ability to backslash "special characters" that would
normally be treated as end of string.

Quoted and non quoted strings can be specified multiply and the
strings will be concatenated together.

String examples

"Hello World"
Hello\ World
This" is a "string
"So"\ is\ "this"
"This \" is too"

etc.

Also switch to using an internal buffer (increased as necessary) to
return strings from the lexical analyser, rather than dynamically
allocating each string returned.  This reduces unnecessary overhead
(mostly strings returned from the lexical analyser are discarded
without being stored, the ones that are stored can be explicitly
copied when necessary), and it fixes a memory leak in the parser
as returned strings are not freed.

Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>