Begin to add support for builtin functions (escape, exists and localtime)

I have begun to build out a feature to support invoking Vim builtin functions. Right now I have chosen one with zero arguments (`localtime()`), one with one argument (`exists({expr})`), and one with two arguments (`escape({string}, {chars})`). I have not yet done any with optional arguments, nor any user-defined functions.

I am submitting this pull request in order to start the conversation about what I need to refactor here. I am thinking there is some stuff from the `BuiltinFunctionCaller` that will probably need to get pushed down into the core of VsVim, but I wanted your input on what layer each thing should live in.

I've been excited to see all the activity lately and see you burning through the regex issues, etc. I hope that I am going the right direction with this feature as well.
@Kazark I've forgotten the exact rule here.  IIRC they are comparable by default if all of the values involved are also comparable.  And if they are comparable it is possible to take a dependency on this by using values of this type with the `>` operator.  

That kind of silent behavior always troubles me because:

- It makes it next to impossible to tell the behavior of a type at a glance.  I don't remember off the top of my head if `VariableValue` is comparable or not and I'm sure that's true for pretty much anyone.  
- It makes it really easy to depend on behavior the author never intended.  At one point in VsVim's history I added delegate member to a discriminated union and ended up with a compilation error.  Turns out that type was included (via several layers of nesting) in another type that I compared with `>`.  I had never intended for the original discriminated union to be comparable but had taken a dependency on it being so in a very indirect manner.  Oops.

This is why I prefer explicitness here (in particular where comparison wasn't intended).  It's easy to add it later if it's valuable but taking it away is often really difficult :(