Refactor out trigger listening to allow target and document triggers

Introduce ve.TriggerListener which handles a set of commands.

Some commands can be triggered anywhere in the document, e.g. commandHelp.
Some commands can be triggered anywhere in a target (i.e. the surface
and any dialog spaces) e.g. findAndReplace. All other commands
can only be triggered from within a surface.

The target listener allows us to remove a hack from FindAndReplaceDialog.

For target/document listeners to work we need to add extra keydown listeners
to isolated windows.

Change-Id: I10857cc66526ca77560cb1e8e78ff1c1a08f3736