Autodetect VariableGroups

This patch set adds auto-detection of VariableGroups.  This requires changing the code in System::add_variable() to detect when repeated variables of the same type have been added to the system, and collapse them into a single VariableGroup.

In order to support this functionality the step where the System informs the DofMap about what VariableGroups exist has to be deferred to System::init_data().

All examples pass.

Comments?

Related to Issue #2.  Once this is landed I'll move on to block matrix support and related optimizations.