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!
should be:
```elisp
   (max 1 (- (point) 100)) (point)))
```
or buffer-substring-no-properties chokes near the top of the file.