Fixed clipping problem with BusyWidget.

It was drawing a busy indicator that was twice as big as its minimum size, meaning it could get clipped quite badly.
Removed overhead of invisible BusyWidgets.

They were still be triggering redraw requests even while not visible - now they don't.
Resolved ambiguities in Widget auto-parenting keyword arguments.

We were taking all unused keyword arguments in the Widget constructors and passing them to the addChild() method used during auto-parenting. This allowed this sort of code, where expand is actually an argument to the ListContainer.addChild() method :

```
with GafferUI.ListContainer() :
	GafferUI.Label( expand = True )
```

The problem with this was that there was no protection against clashes between the names that addChild() wanted and the names that the Widget constructors themselves might define. Such a clash has already occurred, with ListContainer.addChild() accepting horizontalAlignment and verticalAlignment to define child layout and Label.__init__() accepting arguments with the same names to define text layout.

This patch defines a new means of passing auto-layout arguments where name clashes are less likely :

```
with GafferUI.ListContainer() :
	GafferUI.Label( parentArgs = { "expand" : True } )
```

If this seems like a good approach to everyone, then I'll make an issue to deprecate the old behaviour and start moving everything in that direction. The new approach is a bit more wordy, but it doesn't have any gotchas that I can see, whereas the original approach seems elegant until you get a clash, but then you're forced to not use auto-layout at all.

If anyone thinks that there could be a more intuitive name than parentArgs then I'd love to hear suggestions - perhaps "layout" or "autoLayout" or "addChildArgs"?
Made Button accept Return and Enter keypresses for triggering clicks.

I was finding the fact that they only accepted the space bar quite unintuitive.
Made ConfirmationDialogue.waitForConfirmation() focus the default button.

This makes things like the unsaved changes dialogue much more useable. There's a good case for having public focus methods on the Widget class to make this sort of thing possible without cheeky Qt API access, but I'm still undecided on the best semantics. For most things we have set/get, but focus is a bit different in that setting focus on one Widget will take it away from another. Currently we have set/get in MultiLineTextWidget and grab in TextWidget - once we've settled on the right naming we can put something on the Widget base class instead and tidy this stuff up.
Added set/getTextSelectable() method to GafferUI.Label.

By default the text is not selectable, as before.
Added Dialogue set/getModal() methods.

These allow the management of a modal event loop of the same sort used by the existing waitForButton() method. This new lower level functionality can be used by dialogues which wish to stay modal until some event other than a button press has occurred.
Added new icons for use in OpDialogue.
Added background operation mode to OpDialogue.

This executes the op on a background thread, allowing the UI to display an animated busy signal as the op does its thing. Also added new postExecuteBehaviours to allow the display of the result and a success/failure icon, before allowing the user to optionally run the op again.
Updated the BrowserEditor and op app to execute ops in a background thread.
Added a todo.
Added GafferUI.MessageWidget, for displaying IECore MessageHandler output.

This is a refactoring of the insides of NotificationMessageHandler, with the following additions :

- access to the internal MultiLineTextWidget
- thread safety
- a method for appending exceptions as well as messages

Nothing in Gaffer itself is using a NotificationMessageHandler, and popups are a bit annoying generally, so maybe we could deprecate it now?
Added scrolling message output to OpDialogue.

Fixes #591.
Moved OpDialogue result display into details pane.

Arbitrarily long results were making the main panel resize ridiculously. Since the OpDialogue previously didn't display results at all, it doesn't seem unreasonable to have them slightly tucked away.
Renamed Widget "parentArgs" __init__ parameter to "parenting".

This seems less clumsy, and more descriptive than the "autoLayout" alternative (some arguments aren't really about layout - the label argument for TabbedContainer for instance).
Merge pull request #654 from johnhaddon/opDialogueEnhancements

OpDialogue Enhancements