Ciranova PCell caching code and implementation for OpenAccess

There are two components in this contribution: a shared library and a
standalone utility. Together they could provide an interoperable PCell
caching mechanism that allows easy distribution of IP-free OA designs
using proprietary PCells, without resorting to GDS or the like.

The shared library may be used as a PCell evaluator plugin for reading in
cached PCell data. It can also be used by any PCell evaluator provider to
easily add (with just a few lines of code) an interoperable caching feature
to their existing PCell evaluator. In order to be fully interoperable (i.e.
cached PCells from different evaluators may all be read by the same plugin),
the shared library is not meant to be customized.

The standalone utility can be used to create (empty) "cached" version of
the given PCell libraries, along with two "LibDef" files for the created
libraries. One of the "LibDef" files may be used by any suitable OA tools
(e.g. a Layout editor) to populate cached PCell files in those libraries,
and the other "LibDef" file may be distributed along with the cached PCell
libraries for use by other tools to read in the cached PCell files.

The provided standalone utility is usable as it is, but a tool vendor may
choose to customize it to suit their own workflow with extra functionality
(e.g. by adding some technology related data to the created libraries).

The cached data for a PCell are stored as oaDMFiles under the "cached"
PCell's cellview container, so potentially they could be managed by any
OA-compliant DM tools if so desired.