Add new asserts to Tester

* `assertErrorMsg()` to compare the returned error message to a specific string
* `assertErrorPattern()` to check against a pattern
* `assertErrorObj()` for arbitrary comparison function to arbitrary error objects (useful if returning stack trace, for example)
* `assertalmostequal()` to compare numbers in floating point precision, similar to `assertTensorEq()`
* clarify the error messages sent by failed `assertError()`