Text search

Adding text indexes and score sort.

There was a comment on Sort implying the following syntax:
```go
query4 := collection.Find(nil).Sort("score:{$meta:textScore}")
```
but I think it makes more sense to be coherent with the index syntax and do:
```go
query4 := collection.Find(bson.M{"$text": bson.M{"$search": "some text"}})
                    .Select(bson.M{"score": bson.M{"$meta": "textScore"}})
                    .Sort("$score:textScore")
```
Does that make sense?

It might be missing documentation. But I want to see if this might get accepted.
Okay, I see why you want to return weights. Please return (*indexKeyInfo, error) with:

    type indexKeyInfo struct {
        name string
        key bson.D
        weights bson.D
    }