moved setup and teardown to separate module
switched to Testify for assertions
changed approach to mocking mailx

with his infinite wisdome of the ancients, @cdent pointed out that
messing with environment variables, and `PATH` in particular, is
generally a bad idea

the original problem was that `Teardown` was being invoked before
`Sendmail` when the latter was invoked as a goroutine (via the
respective web handler) - thus `PATH` was being reset before it was
used, leading to the mailx mock being ignored

note that this doesn't actually solve the goroutine async issue, but
merely works around it: `Mailx` is never reset (cf. inline comment), but
that's (just barely) acceptable in this context