Support imenu

This pull request closes #80, #77, #56 . It also may help to address ensime/ensime-server#471
or at least add word boundaries. Otherwise `val` will match val `value` ?