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

ha, true. However, if it's not semantically versioned, i don't want it anywhere near code i'm responsible for :-)