Switch to tasty

Since tasty depends on optparse-applicative, I've had to move the tests to a
separate package to avoid the cyclic dependency. Also, since updates to
optparse-applicative might break the build for tasty, the test package does not
actually depend on optparse-applicative, but includes its code directly.