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`?

Not exactly true, that still depends on if BATS is semantically versioned.