Use eslint

This is an initial pass which should get us to an ok starting point.
There are some important rules which had to be disabled and some rules
which are warnings which shouldn't be (and visa versa) but it's an ok
start.

We can fix most of the ones there so far and then consider making this a hard condition for passing tests. https://gist.github.com/zpao/a7a5b89e365adb3f911b has the current results.