Add a `src` option to all methods that trigger events.

This value is passed along to the event facade of the resulting event, and
can be used to distinguish between changes caused by different sources
(such as user-initiated changes vs. programmatic changes).
Merge branch 'tree' into dev-master
Build tree and friends.