use evals rather than a global __DIE__ override to handle accessor exceptions

Instead of overriding $SIG{__DIE__}, use an eval to add information
about the relevant accessors to errors during isa checks or coercions.
This prevents modifying messages of exceptions generated within the isa
check, which may not be related to the attribute itself.
test odd exception cases with accessors
Tests for eliminating global die handler
optimize better for isa case