Annotations filter by viewport

Implementation for #540 and related minor improvements.
`_.extend TOOLTIP_DEFAULTS` modifies `TOOLTIP_DEFAULTS` (first argument) in place! You probably want `_.extend {}, TOOLTIP_DEFAULTS, ...`.