+ Rename some functions to make sense:
+ Error now asserts that an error *did* occur.
+ NoError was added to assert that an error did *not* occur.
+ Error2 has been renamed ErrorEq.
+ More documentation added to clarify things.
+ Certain functions take optional strings to describe what went wrong.