Properties
----------

A property in the OMF is an abstraction over the set of get/set methods for
member variables of various interfaces. Essentially, it's a collection of
wrapper structures for the various get, set, add, remove and clear methods
associated with the various attributes in the metamodel. Ideally, we'd like
to build properties in a manner very similar to the way python interfaces
are constructed using the boost methods. It would be ideal to do something
like this:

Element::Element()
{
  addProperty("foo").
    getMethod(&Element::foo).
    setMethod(&Element::setFoo);
}
