Properties
----------

A property in the OMF is an abstraction over the set
of get/set methods for member variables of various
interfaces.  This may also extend to the add/remove
interfaces provided by collection members. However,
that isn't super important right now...

Essentially, each property is going to be a small
named collection of function pointers. Each function
pointer is going to point to the accessor/mutator
for each object. This is not a very complex design.

There are two small problems: one with getting attributes
and one with setting attributes.

The getter problem is based on the conversion between
returning a pointer and a reference to a member variable.
We need to provide some adaptation to make both work
within the same context.

the with the mutator methods, we have a slightly
different problem. We need to cast the target object
type to the right form before adding it... 