Externalize keystrokes handling

Keystroks and bound actions are handled in a separate
class, that can load a key mapping from a file. The goal
is to have keybindings that can be toggled on/off depending
on the mode we are in.

Signed-off-by: Jean-Yves Tinevez <jeanyves.tinevez@gmail.com>

Conflicts:
	src/main/java/viewer/SpimViewer.java
InputActionBindings which chains ActionMaps and InputMaps.
Tools can add/remove their own ActionMap and InputMap. InputMaps are
chained in reverse order of addition. The last added InputMap overrides
all previous ones.
simplify SpimViewer.align() using the AlignPlane enum.
coerceAffineDimension and qAlign quaternion are now members of AlignPlane.
We don't need the id-cascade in align() anymore.
implemented SourceGroup.copy()
Manual Transform Tool:
 - moved setup and keybindings out of SpimViewer into ViewRegisteredAngles.
 - made it work for groups (transform current group when in fused group mode)
 - fixed bug in ManualTransformationEditor.reset()
yet another attempt at choosing the mipmap level which will give the best quality.
deal with sources being not isPresent() in the BoxOverlay.
use Source.isPresent() to determine visibility, too.