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"?