Clone Error instances to preserve instances of subclasses of Error

If we're dealing with an instance of a subclass of Error, we can't just make a
new Error, otherwise we lose that class information. Instead, we can clone the
original instance.
@azylman @Christopher-Bradshaw I realized along the way that our custom errors don't have a stack trace. Adding this line will make them have a stack trace. Think we should add it to all our custom error classes?