Refactor builders
There was a bug in previous versions where changes to builders would leak if they used existing collections. The API has been changed so that builders can only be used with new collections and are marked as invalid after fetching the underlying collection.