Add support for kwargs in function calls

Pulled this from some grammar experimentation I've been doing on and off.

This is pretty straightforward - adds parsing of functions to include keyword arguments. This allows one to call functions with a lot of options like summarize() a little simpler:
summarize(my.metric, "1hour", alignToFrom=true)

It also allows one to use the argument name to make a function call more descriptive to read (as you might do in python:
aliasSub(my.metric, search="^my", replace="")