added add/remove methods with emitting

a `remove` makes a lot of sense to me, in which case having the `add` alias is nicer imo. with `push` left for backwards compat.

and then i'd like to be able to listen to models being added/removed from collections.