Begin moving to a unified operations structure (properties).

This commit introduces LavIProperties, which will eventually grow to encompass inputs and outputs as well.
Anything in the library that wishes to have properties has as its first member a LavIProperties, and can then be passed to property functions properly.
This will grow to include type checking, safety, and etc.  The long-term goal is to have as few special case functions as possible, i.e. even graphs can have inputs and outputs and be treated as nodes.