Update collections rather than replace them in their entirety

If association proxies are updated by replacing the entire collection,
SQLAlchemy does an INSERT of the new associations before doing a DELETE
of the old ones, resulting in unique constraint violations.