have `RunError` *optionally* take a custom backtrace

This updates the RunError custom exception to be optionally created
with a custom backtrace.  If none is provided, it falls back to the
`caller`.  This makes it behave like any other exception class.

Closes #15.