syntax: ignore first '\n' in triple-quoted strings

This detail of the specification makes triple-quoted strings more
readable and usable in code.

Before, programmer was required to starts content just after the """
thus writing unaligned piece of text

~~~
var x = """Roses are red,
Violets are blue,
Triple-quoted strings,
Are easier to write.
"""
~~~

This patch ignore the end of line iff it just follows the """,
thus programmer can write

~~~
var x = """
Roses are red,
Violets are blue,
Triple-quoted strings,
Are easier to write.
"""
~~~

This commit will improve the usability of the new/future template library.

Signed-off-by: Jean Privat <jean@pryen.org>
syntax: allows trailing " and { in triple quoted strings

Previously, the 3 first " where the start
and what followed the content until 3 other "

therefore `""""x"""` is the 2 char string `"x`;
but `"""x""""` was illegal (a single x followed by a un-terminated string)

This commit make long string end at a sequence of 3 or more " but considers
only the last 3 to be the end token.

Now, `"""x""""` is legal and is the 2 character string `x"`

Last example:

~~~
print """"""""" # output 3 characters: """
~~~

Signed-off-by: Jean Privat <jean@pryen.org>
syntax: enable empty expression-expansion in super-strings

Allows `"a{}b"` to be `"ab"`, ie with an empty expansion in the body.

The point of this commit is to allow line-breaks or comments in strings

~~~
print "this {
      }is a { # some comment
      }string"
~~~
outputs "this is a string"

Signed-off-by: Jean Privat <jean@pryen.org>
parser: regenerate for strings

Signed-off-by: Jean Privat <jean@pryen.org>
tests: add string-related tests

Signed-off-by: Jean Privat <jean@pryen.org>
vim: update syntax for strings

Signed-off-by: Jean Privat <jean@pryen.org>
Merge branch 'triple_quoted'