First stage refactor
First stage refactor

This primarily is just moving the helper functions out of being declared in the
provideLinter function. It also starts implementing async/await.

AtomLinter/linter-elixirc