[FEATURE,API] Initial support to wrap DataProcessing in QVariant

These changes allow the DataProcessing metadata class to be converted to
QVariant, and saved using the QVariant API.

Specifically, the Q_DECLARE_METATYPE was used to wrap DataProcessing and the
two required stream operators (using QDataStream) were added.

Use of the QVariant is as follows:

  // obtain instance of DataProcessing and add to a QVariant
  // this should work without any additional code
  DataProcessing dp = input[0].getDataProcessing()[0];
  QVariant variant;
  variant.setValue(dp);

  // I think these two functions are both required for the
  // QVariant::save() and QVariant::load() methods. I know the second
  // *is* required because the stream operators need to be
  // registered.
  qRegisterMetaType<DataProcessing>("DataProcessing");
  qRegisterMetaTypeStreamOperators<DataProcessing>("DataProcessing");

  // An example of the QVariant::save() method being called.
  QSettings settings;
  settings.setValue("DataProcessing", variant);
  settings.sync();

  // This should call the QVariant::load() method, and unpack it
  // into a DataProcessing instance.
  DataProcessing retrivedDP = settings.value("DataProcessing").value<DataProcessing>();
[FEATURE,API] Support to wrap MetaInfoInterface in QVariant

These changes allow the MetaInfoInterface metadata class to be converted to
QVariant, and saved using the QVariant API. The changes in this class
would probably never directly be used, but instead in MetaInfoInterface
subclasses to simplify their changes to wrap in QVariant.

Specifically, the Q_DECLARE_METATYPE was used to wrap MetaInfoInterface and the
two required stream operators (using QDataStream) were added.

Note: the stream operators are a bit more kludgy than ideal for
MetaInfoInterface in order to handle DataValue types (i.e. converting
between QString/String to the appropriate DataValue), especially for
StringList, IntList, and DoubleList types.
[INTERNAL] Update Software to save its extra meta info

Previous commit of Software did not save any additional meta info. Now
it calls the appropriate stream operator of MetaInfoInterface.