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
Though, TBH, I'm not sure why you need static `opCall` here at all, you could have just left it out and `ThrowingRange(...)` syntax will still work, since the default ctor for structs will initialize struct fields in declaration order.

However you do still need `static` for the struct, since otherwise dmd thinks you need to close over the unittest's local variables, which is what makes the struct initialization fail. A compiler enhancement bug is probably in order. :-)