Move coercion into a safe-coerce method

This method recognizes which option to report on if things should go
wrong, and wraps exceptions up in a SubcommanderException so that
users using custom TypeResolver objects don't have to remember to do so
Create an exception class for type coercion problems
Overwrite command rather than cloning exception

Cloning the exception drops data that we want
Add test for coercion failure
Track original exception with type coercion exceptions