Add company-mode backend (resolves #467)

WIP

Pros:
* UI is slightly nicer than auto-complete mode (IMO).
* Feels nice and snappy.
* Supports disabling de-duplication, so arity overloads work.

Required more work than I expected to sort out the client-side caching, but the code isn't terrible.
Give it a try!
This part is a no-op. Duplicates are not removed by default, but even if you return t here, arity overloads will still be displayed as separate items, because item's annotation is considered a part of its identity.