Added {let} command.

This change is inspired by the new version of Google Closure
Templates. Use the {let} command to define an alias for an
intermediate value. Unlike the original version, the syntax clearly
defines the scope and allows you to define multiple aliases. Original
syntax for rendering to string not supported.

Usage: 

{let $<identifier1>="<expression1>" .. $<identifierN>="<expressionN>"}
  ...
{/let}
fix indentation in closure-template-html-mode
Added support List literals.

[<expr1>, <expr2>, ...]
For example: [1, 'two', [3, false]]
[] is the empty list.
Added support for Map literal. Implemented keys and augmentMap
functions. New generic function - #'fetch-keys.

Map literal - [<keyExpr1>: <valueExpr1>, <keyExpr2>: <valueExpr2>, ...]
For example: ['aaa': 42, 'bbb': 'hello']
[:] is the empty map.

keys(map) - The keys in a map as a list. There is no guarantee on
order.

augmentMap(baseMap, additionalMap) - Builds an augmented map. The
returned map contains mappings from both the base map and the
additional map. If the same key appears in both, then the value from
the additional map is visible, while the value from the base map is
hidden. The base map is used, but not modified.
Fixed bug in common-lisp-backend.
Lispify package name in Common Lisp backend.

Small improvement for "lispify-string": dash inserted
only before upper case letters and after lower case letters
and digits.