Added message filtering to MessageWidget.

The filtering is specified using MessageWidget.setMessageLevel() and queried with MessageWidget.getMessageLevel(), and applied to a text buffer which contains all the messages. This allows the filtering to be specified after the fact, and for messages to be made visible even if they were filtered out at the time of handling. The default level is Info, meaning that Debug messages are not displayed by default.

When messages are available but filtered out, the left hand column of buttons will show that fact, and clicking on a button will raise the level to make the messages of the appropriate level visible.
Merge pull request #749 from johnhaddon/messageWidgetFiltering

Added message filtering to MessageWidget.
Updated changes
Added Widget.reveal() method.

This ensures that all the widget's ancestors do whatever is necessary to make the widget actually visible directly to the user.

Fixes #503.
Improved plug "Edit Input..." menu item.

It now uses the new Widget.reveal() method to ensure that the input plug widget is directly visible on screen.
Added extend argument to NodeGraph.frame().

The default value of false behaves exactly as before - the specified set of nodes are framed in the viewport. A value of true still causes the nodes to be included in the framing, but in addition to the original contents of the frame.
Prevented nodes being created offscreen.

The node creation menu and the node paste menu item now always adjust the framing to include the new nodes in addition to the old framing.

Fixes #640.
Merge pull request #750 from johnhaddon/nodesCreatedOffscreen

Preventing nodes being created offscreen
Added CompoundNumericPlugValueWidget.childPlugValueWidget().

Every PlugValueWidget for any type of CompoundPlug should implement this.
Merge pull request #752 from johnhaddon/compoundPlugValueWidgetAccessor

Added CompoundNumericPlugValueWidget.childPlugValueWidget().