fix(error): AppError uses Error.captureStackTrace

The AppError constructor accepts a `stack` property in the options,
but previously always assigned `this.stack` to it, leading to Errors
with no stack trace. This was confusing our logging infrastructure, which
tries to improve the format of the `stack` property.

Closes #164