WIP collection

I've opened this mostly in case somebody is working on something similar, so we don't collide!
I think this logic needs to go somewhere (that is, the logic that says "if this is a replica set I need a primary otherwise any standalone is fine") but putting in in a ```primary?``` method feels a bit strange.  Various operations raise this error, which is why I added this line:
```
raise Exception, "Must use primary server" unless context.primary?
```