We allocate a separate list for model-binding related objects when we
create the resource filter contexts, and these lists then live the
lifetime of the request. These *may* be modified by user code in
filters as a supported feature, but rarely are changed in practice.
This change adds a simple CopyOnWriteList implementation to reduce the
amount of copying that's actually done.