Introduce flag harmony_arrow_functions

The boolean flag harmony_arrow_functions enables support for arrow-function
syntax. Also, the value of the flag is added to the parser and preparser,
plus its accessor methods.
Implement lexing of the "=>" (aka ARROW) token

The ARROW token is used to separate the argument list from the function body
(or expression) of arrow functions, and it is a punctuator as per the last
ES6 draft spec.
IsArrowFunction flag in FunctionLiteral AST node

Adds a new IsArrowFunction flag to the FunctionLiteral AST node. This is to
be used to signal arrow functions, or other function-like constructions which
should use their scoping semantics.
Pretty-print arrow functions

Arrow functions are pretty-printed as "<arglist> => { <body> }" instead of
"function <arglist> { <body> }", to match their source syntax.
Implement handling of arrow functions in the parser

Arrow functions are parsed from ParseAssignmentExpression. Handling the
parameter list is done by letting ParseConditionalExpression parse
a comma-separated list of identifiers, and it returns a tree of
BinaryOperation nodes with VariableProxy nodes as its leaves, or
a single VariableProxy if there is only one parameter. When the arrow
token "=>" is found, the collected VariableProxy nodes are passed
to ParseArrowFunctionBody. This needs a special case for handling
the empty argument list "()", as ParseExpression expects parenthesized
expression to not be empty. In this last case, ParseExpression will
return NULL, meaning that the parameter list is empty.