Added range for MongoCursor

One of enhancement I have long wanted - working with MongoCursor with InputRange interface. Allows for more functional way to process database data into final output with all std.algorithm & friends help.

Motivating example from tests:

```
    coll.insert(["key1" : "value1"]);
    coll.insert(["key1" : "value2"]);
    coll.insert(["key1" : "value2"]);
    auto data1 = coll.find(["key1" : "value1"]);
    auto data2 = coll.find(["key1" : "value2"]);

    import std.range, std.algorithm;
    auto converted = map!
        (a => a[0].key1.get!string() ~ a[1].key1.get!string()(
            zip(data1.range, data2.range)
        );
    assert(!converted.empty);
    assert(converted.front == "value1value2");
```