o.c.opibuilder: added OPIShell

Add action for opening OPI shell and add that action to
WidgetActionFactory.java.

Squashed with bug fix commits:
Edm Mode: Fixed bug in OPIShell resizing
EDM Mode: Fixed bug where shell wasn't raised to the top
o.c.opibuilder: allow ScriptUtil.close() to close OPIShell

This uses a dedicated close method that takes the current widget
as an argument which is then used to determine the correct shell
to close.
o.c.opibuilder: add PV name to pastebuffer if widget is middle-clicked
o.c.opibuilder: only zoom in and out buttons on OPIView toolbar

Having all the zoom controls frequently means that they are pushed on to
a new line, disrupting the display.
o.c.opibuilder.widgets: Changes to Byte Monitor

Use forground colour for border, and set to 1px
o.c.opibuilder: Added right click menus in OPIShell
o.c.opibuilder: Added option to hide compact and full screen menu items
o.c.opibuilder: Start OPI Shell from launcher.openFile if it is passed in as a macro
o.c.opibuilder: Raise OPIShell to top if already open.

The OPIShell must have a unique path and macros.
In order to do this:
 - maintain a cache of open OPI shells.
 - rename runEdmShell() to openOPIShell() for consistency
 - make the OPIShell constructor private so that the only way
   to create an OPIShell is via the static method openOPIShell()
o.c.opibuilder: Move Display ID counter to DisplayModel.

This allows automatic incrementing for OPIShell.
o.c.opibuilder: Attempt to account for unreliable behaviour when opening shells

Sometimes when a new shell is opened it doesn't receive the shellActivated
callback. Also raising a shell doesn't always work once it's already open.
These changes mitigate these effects to some extent.
Add right-click Edit OPI functionality
Set visibility and enabled rules for the EditOPI command
Extend EditOPI handler to switch 'running' OPI to edit mode in main editor
o.c.opibuilder.editor: Run OPI Action now opens in same window
Extend EditOPI enabling to include OPIViews
Move EditOPI handler enabled state from XML to code

- tie menu visibility to enabled handler
- add comments
Update edit-right-click to correctly handle case with multiple open OPIRunner instances
Converter: make EDM OPIs the default for related displays
o.c.opibuilder.converter: change symbol conversion to EDM symbol