State monad + restructuring repo

Now with state monad
initial sbt support (just the minimum required for ensime)