Now throws Invalid.Data when an externally defined reader throws an exception.
Added readOption() to public API to complement read()
Fixed scala warning when catching all exceptions