Represent SpecifiedValues with an array of ParsedProperty to make it smaller
Represent SpecifiedValues with an array of ParsedProperty to make it smaller

Before:
  sizeof SpecifiedValues: 824

After:
  sizeof SpecifiedValues: 72

The internal SpecifiedValues.props is a Vec that will grow up to the
maximum number of properties (PropertyId::UnsetProperty) times the
sizeof ParsedProperty, plus the constant-sized SpecifiedValues.indices
array.

For the pathological file in issue #42, this reduces total bytes from
463,412,720 to 314,526,136.

Massif's snapshot with peak memory usage:

--------------------------------------------------------------------------------
  n        time(i)         total(B)   useful-heap(B) extra-heap(B)    stacks(B)
--------------------------------------------------------------------------------
 82 20,577,936,567      314,526,136      296,005,481    18,520,655            0
94.11% (296,005,481B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
->66.01% (207,627,552B) 0x498E73A: alloc (alloc.rs:84)
| ->66.01% (207,627,552B) 0x498E73A: exchange_malloc (alloc.rs:206)
|   ->66.01% (207,627,552B) 0x498E73A: new<rsvg_internals::node::Element> (boxed.rs:121)
|     ->66.01% (207,627,552B) 0x498E73A: rsvg_internals::node::NodeData::new_element (node.rs:108)
|       ->66.01% (207,614,880B) 0x49A9037: rsvg_internals::create_node::creators::create_use (create_node.rs:49)
|       | ->66.01% (207,614,880B) 0x496C99F: rsvg_internals::create_node::create_node (create_node.rs:267)

GNOME/librsvg,GNOME/librsvg,GNOME/librsvg,GNOME/librsvg