Support imenu

This pull request closes #80, #77, #56 . It also may help to address ensime/ensime-server#471
scala-syntax:definition-words-re is not used directly as an re, like the other re suffixed variables. It's actually only used in `scala-syntax:all-definition-re` and nowhere else. val will never match value in all-definition-re because of its construction. I vaguely recall that there was an issue when I used regex-opt here.