Set backtrace if not set

If a promise is rejected without a reason,
or with an exception class as reason, or
with an exception object lacking a backtrace,
finding out where the rejection actually
originated from is really hard.

In addition to that, the (re-)raising of the
reason in #sync will set the backtrace if it
isn't already set, further obscuring the
rejection's origin.

To prevent this confusion, we always build
a proper exception object we don't already
have one, and default the backtrace to
the caller of #reject.
Reinstate specs for deviations from the A+ spec
Adjust Flay and Reek config
Update changelog for 0.5.0