Support imenu

This pull request closes #80, #77, #56 . It also may help to address ensime/ensime-server#471
Sure.
You don't think that having `scala-syntax:beginning-of-definition` be interactive would be useful?