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.