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.
It looks to me like you have almost the same test in each of these five `unittest` blocks. Please condense them. If you're trying to test different strings to split on (like this one appears to be testing that its result is empty), then you can loop over tuples of the strings and results e.g.

    foreach(input; [tuple("12a,54b,2c,7d", cast(int[])[]),
                    tuple("45,19,72a,49", [45, 19, 72a, 49])])
    {
        auto s = input[0]
        ...
        assert(r == input[1], to!string(r));
        ...
    }