Add emacs-side caching of completions

Completion-at-point makes multiple calls, really slowing things
up. This change means that subsequent calls immediately return
the same result.
Use TryGetRecentResults for better caching

This should speed things up, but at the moment it doesn't work.
There never seem to be any recent results. Maybe a timestamp issue?