Rangeexception front

When an Exception is thrown by a Range the execution of the Range is usually aborted.
This PR add two functions:

* handleFront
* handlePopFront

that wrap a Range and call the functions front and popFront of the wrapped Range. If the wrapped Range throws an Exception an user provided handler is called. This handler gets the Range and the Exception passed and can then be used to handle the Exception and put the Range in an workable state again.

Additional PRs will add handler Ranges for back|popBack, empty and opIndex
This still looks wrong, it should be `return typeof(this)(input.save);` or something along those lines. You have to call `input.save` to safely create a copy of the underlying range, otherwise it won't work correctly if it has reference semantics.