429 - use "Bats" for tests

Opening this PR now because I would like some review and discussion (though obv. this can wait since lots of people are taking time off over the next week or two).

So far I have ported the tests in `test/fast` to bats.

#### Pros

* simpler syntax using helper functions
* can have multiple tests per file

#### Cons

* bats tests seem to run slower 
* cross-shell testing - how to do with `bats`?

Certainly that'd be a minimum requirement, but I prefer using `npm`, since that gives us full semver support.