Resolve #19 - add new exception extension methods to fix stack traces

This essentially provides a priority-ordered way of attempting three differing
mechanisms to preserve/fix the stack trace for an exception, choosing to use the
first of those mechansims that succeeds.

* Add tests for this functionality.

* Credit for the 'serialization' mechanism (StackOverflow) added.