Polymorphic return values are really useful. Often, we just want to know
if something worked or not. Other times, we'd like to know what the
error text was. Still others, we may want to know what the error code
was, and what the error properties were. We don't want to handle objects
or data structures for every single return value, but we do want to
check error conditions in our code because that's what good programmers
do.

When functions are successful they may return true, or perhaps some
useful data. In the quest to provide consistent return values, this gets
confusing between complex, informational errors and successful return
values.

This module provides these features with a simple API that should get
you what you're looking for in each contex a return value is used in.
