handle: A Range that handles an Exception

When a Exception occurs inside a range chaining the whole chain dies usually. The Handle range fixes that, as it catches a defined exception and calls an user defined handler on it.
You should be able to change this to `return ExceptionHandler!(IRange, E)(input);` (assuming that `handle`'s template parameter is changed to `E` like `ExceptionHandler`'s is anyway). If a struct has no constructors, then it implicitly has a constructor which takes arguments for each of its member variables in the order that they're declared. But if you change `front` like I suggested, then you'd have to add a constructor anyway so that it can call `input.front`.