for issue #10; an IdGenerator interface, use bson.ObjectId as default