Operations refactor

Because I love refactoring the Operation models so much, I decided to do it again today.

While working on the bulk write API design, I realized it was silly to pass in the collection name and database name as part of the operation spec. It would be better to pass in the collection and then just get the names from the collection object.