Try to report the correct stack trace

When multiple exceptions are thrown, store all stack traces either by
refaddr or string value. Then try to find the trace matching the caught
exception. Make sure to only store the first stack trace for each
exception so that rethrown exceptions are ignored.
Add tests for multiple exceptions

- Test that the original stack trace is printed when an exception is
  thrown and caught in a destructor (like
  DBIx::Class::Storage::TxnScopeGuard does).
- Test that the original stack trace is printed when an exception is
  rethrown.

Run all tests with strings and exception objects.
Create stack traces with no_refs option

If this option isn't set, references to function arguments in the stack
trace are retained. This can lead to destructors being called twice if
an exception is thrown from a destructor, like in
DBIx::Class::Storage::TxnScopeGuard, for example.
Switch to Try::Tiny in multiple_exceptions.t

Should fix test failures with older Perls.
Merge pull request #476 from nwellnhof/stacktrace-fix

Fix stack trace middleware when multiple exceptions are thrown