Toggle hyperlink active state via classes rather than custom XML attrs

Toggling a custom attribute on a custom XML element doesn't properly
update the visual state on some browsers (e.g., WebKit on OSX). Using
CSS classes instead seems to be better handled in these browsers,
correctly updating the mouse cursor icon on the fly.
Clean up API dox
Normalize keyboard events involving modifiers

For keys that are also modifiers (e.g., Ctrl), different browsers +
platforms may report the modifier flag as leading or lagging the
keypress event. For example, pressing the ctrl key in FF on Linux will
report (ctrlKey:false)in the keydown event, while Chrome on Linux will
report (ctrlKey:true) in the keydown event. For these specific cases,
normalize the modifier flag so it is always the set to true.

Fixes issue #322.
Merge pull request #462 from peitschie/active-link-toggle

Toggle hyperlink active state via classes rather than custom XML attrs
Refactor HyperlinkClickHandler to cleanup event binding

Move control of event bindings from SessionController to
HyperlinkClickHandler so bindings will be updated whenever modifier is
changed. This allows some simplification as HyperlinkClickHandler can
simply use the KeyboardHandler.Modifier.
Add tooltip support for hyperlink