Created explicit types for fail messages

By creating explicit ShouldMessage and ShouldNotMessage types, a matcher
can no longer be compiled if the order of the two have been switched.
Fix typo
Removed commented out lines no longer needed
Cleanup function

Changed generic function to use short parameter name conventions, f for a
function, x, y for values