use a list internall in a callback set

MethodWrappers are not hashable, and can't be made hashable, so a set is
off the table. The list has the benefit of being smaller at small speed
tradeoff for add/remove. Since N will typically be small, this is not a
big deal.
wrap method connections in a weak MethodWrapper

This allows bound method connections to automatically die when the
underlying object is collected.