Introduce Catching protocol for convenient nesting of error types for typed throws
#19
+588
−45