Add `TypeGuessResolvable`
Add `TypeGuessResolvable`

When using the builder pattern in Jsonnet, it's frequently useful to
have some idea of what options are available in autocomplete. For
example, in the following snippet, when a user presses `.` on the second
line, we want to be able to populate useful suggestions (in this case,
motivated by ksonnet, we'd want members like `withLabels`).

  metadata.withAnnotations({foo: "bar"})
    .

The difficulty with this from a static analysis perspective is that you
can't really resolve through a function application. In other words, in
general `withAnnotations({foo: "bar"})` can return any type, and to find
out which type, you have to execute it.

Nevertheless, the "builder" pattern will be common for at least some use
cases, and so to support this we introduce `TypeGuessResolvable`.

The idea of `TypeGuessResolvable` is to "guess" the return type of
something, and then populate autocomplete with things we can prove will
be present.

In this change, we introduce only support for builder-style notation,
namely, methods whose body begin with `self +`.

Signed-off-by: Alex Clemmer <2e6147cbff6661bd424c256de746b4f230002dff@gmail.com>

heptio/vscode-jsonnet,heptio/vscode-jsonnet