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.
I can not remove all support for weights from this pull-request, the weights are needed for the text indexes. The text keys in the index are not in the list of keys, only in the list of weights. I can skip implementing the user input for weights, but I still need to put the weights = 1 in the index.

It's true that there is too many result arguments. What about returning (indexSpec, error) instead of name, key & weights?