improved and bugfixed

Fixed a grammar bug where an empty foreach caused a failure in parsing.
Added the ability to do function invocation  of arbitrary depth - e.g.
f()(). Refactored and enhanced how evaluation of value expressions
worked to support this new functionality and existing properties more
elegantly. Added string and number literals as well as function
invocation makes it useful.