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
* each test is run in clean sandbox (under tmp dir)

#### Cons

* bats tests seem to run slower 
* cross-shell testing - how to do with `bats`?

A "natural" message would be nicer, some already have one though :)