Better test coverage, make strategy methods public

Closes #7. This change makes Strategy#authenticate and Strategy#receive
public by default, and refactors test coverage to execute #receive rather
than instantiating the receiver and then testing the result of #message,
which is why the tests didn't catch the protected method bug in the first
place.