Increased default size of browser app.

Fixes #795.
Added immediate execution mode to OpDialogue.

This causes the dialogue to start with the op already executing, skipping the parameter editing phase.
Used OpDialogue to improve progress/error reports in OpPathPreview.

Fixes #792.
Enabled background mode for OpDialogue launched from BrowserEditor.
Fixed OpPathPreview UI glitch.

Destroying and recreating the button on every update was creating flicker issues. We now keep the button and just replace the Op UI each time.
Fixed OpPathPreview bugs.

- Errors if the op result type had no parameter mapping. This was from using an OpHolder instead of a ParameterisedHolderNode - since we don't use the computation facilities of the node and instead run the op ourselves, we don't need to use an OpHolder.
- Using the default IECore ClassLoader and ignoring any custom ones. This was because we were using OpHolder.setOp( className ) rather than loading the op with self.getPath().load().
Fixed NodeGadget::noduleTangent() binding.

Because of a signature mismatch, any python implementations of the method would not be picked up from C++.
Fixed potential bug in NodeGadget::create().

It was possible to dereference an invalid iterator if no creator was registered for the base node type. This didn't happen in practice, but the new implementation is more idiomatic, doesn't allocate temporary memory unnecessarily and should keep Coverity happy.
Fixed LRUCache getter cost calculations.

Because the cost arguments weren't references, the costs weren't getting returned to the cache.
Fixed Metadata test hang.

Because testMetadataThreading() emits metadata changed signals on arbitrary threads, if any python slots happen to be connected, they must acquire the GIL. Therefore we must release the GIL before running the test. This problem didn't present itself when running the tests in isolation because no slots are connected then, but if run in a scenario where a slot was connected, the problem would become apparent.
Improved Window.resizeToFitChild() behaviour.

If called on an as-yet unshown window, it would move the window to the top left corner of the screen. Now the window will still be opened in a sensible place. Added additional shrink and expand arguments to further control the resize behaviour.
Fixed bug in Window.resizeToFitChild() when window is unshown.

The "current size" of the window is meaningless in this case, so we must not take it into account, not matter what the values of the shrink and expand arguments.
Fixed OpDialogue size behaviour.

It now automatically expands if necessary when the parameters or details panes are first shown.
Fixed "KeyError: 'currentTab'" error when loading custom layouts.
Added more sensible initial widget sizes to BrowserEditor.

The sizes are also saved and restored when modes are switched.
Added support for fixed size CompoundVectorParameterValueWidget.

The ["UI"]["sizeEditable"] user data entry can be given a BoolData value of False, which will cause the +/- buttons to be hidden in the UI, enforcing a fixed length on the data in the vector parameters.
Added per-column editability to VectorDataWidget.
Added per-column editability to CompoundVectorParameterValueWidget.

This uses a ["UI"]["editable"] user data entry in each child parameter, where a BoolData value of False will make the column for that parameter read-only. I would have liked to have used the existing ["gaffer"]["readOnly"] entry which controls the editability of the underlying plug values instead, but that would prevent resizing of the data when only some columns are editable.

Fixes #766.
Merge pull request #812 from johnhaddon/browserOpMode

Browser Op mode improvements
Merge pull request #805 from johnhaddon/browserAppDefaultSize

Increased default size of browser app.