Refs #6078, extract factory logic from Report::factory and move to ComponentFactory utility class.

Also reuse in Dimension to allow creating Dimension instances by human readable string IDs.