Fixed#29
errors.New, etc values are not expected to be compared by value but
the change in errors#27 made them incomparable. Assert that various
kinds of errors have a functional equality operator, even if the
result of that equality is always false.
Refactory errors.location to be a stack of callers rather than the
topmost caller. This is in perparation for storing the entire error
stack inside topmost error.
errors.Print had a number of problems. Firstly, it was hard coded to
print to os.Stderr, which made it difficult to test, and hard to write
an example test for. Secondly, comments made in issue #20 make it clear
that helpers need to have a high bar for inclusion in this package, and
something that wrapped errors.Fprint in a way that was hard to test
fails that bar.
So, Remove errors.Print, which frees the identifier for being reused
later, and reduces the size of the package.
* rename loc type to location
* move locationer interface inside Fprint, rename to location
* refactor Wrap/Wrapf into helper method
* remove errors.e type, compose an anon struct in wrap and add a Message() interface method to extract the cause message