Trying to write a better parser. UNTESTED!

The previous parser relied on some obscure regular expressions which
probably could be tricked.
The new parser will also allow a more sane definition of the short tags
?{..|..|..} and ~{..|..|..}. Before these were a terrible hack...

All in all the goal of the rewrite is to produce a more robust parser.
Some smaller fixes. Parser seems to work now.

* Parser::next fixed
* Parser::search_multi fixes (wrong variable, wrong offset added)
* fixed shortifopen and shortcompopen overwriting parser result.
Fixed tag parameter parsing
Added function to tidy up the AST
Fixed parse_tag and parse_var

Now everything seems to work fine. The output code very noisy, though...
tidyup_ast improved
Removed old parse function and added some documentation.
Merge branch 'parser2' into improve-lang

The new parser will allow some improvements to the language.
Added some tests
Merge branch 'parser2' of git@github.com:kch42/Stupid-Template-Engine.git into improve-lang
Gitignore some tronscompiled templates
Added some tests.

Many of these break. Mostly because the way whitespace/newlines are added
(or not added). This is terribly broken ATM...
(It was okay with the old parser, I'll try to replicate that behaviour)
Adding default values to some properties.

To reduce the ridiculous amount of notices PHP throws when parsing and
executing templates (should really be fixed in the future, this is
quite embarassing...).
Made the tests more tolerant for whitespace.
Better handling of newslines and whitespaces
Fixed potential bug in VariableNode::transcompile

Also now PHP doesn't throw notices here.
Fixed some mistakes in mktag subcompiler

* Undeclared $code variable fixed.
* "use ($mandatory_params)" only included, if the $mandatory_params
  variable will be generated.
* Fixed $outputstack not being initialized correctly.
short cmp tags can now contain tags.

To accomplish this, tag parameters can now be compiled, even if they
contain tags (the parser still doesn't allow this, but the compiler can now handle
this situation).

Also reformatted the code.
New Test
Merge branch 'parser2'

STE gets a new, more robust parser. The previous parser was very fragile
and relied on some ugly regular expressions.

Other advantages of the new parser:
* No precompile phase to implement short tags (?{}, ~{}), that means
  short tags can now be nested in any order.
* The parses now uses the mb_* functions, so it should handle non-ascii
  text correctly.

There were also some improvements to the compiler:
* Various small bugfixes.
* The compiler accepts and compiles tag parameters that have tags in
  them. The parser still doesn't accept this (and probably never will),
  this is mainly used to allow arbitrary code inside of short cmp tags
  (~{..}).

There are now (finally!) tests for the language to maintain a certain
quality and consistency (which STE lacked in the past, to be honest).

And finally the code was reformatted. Now 1TBS is used instead of
Allman.