ooxml: Preserve shape style attribute fillRef

Shape style attributes contain the default format for the shape in
case that no direct format is specified for it. This is an example
of the attribute we want to preserve with this patch:

  <wps:style>
    ...
    <a:fillRef idx="1">
      <a:schemeClr val="accent1"/>
    </a:fillRef>
    ...
  </wps:style>

The relevant values in these tags are stored at the maShapeStyleRefs
member in the Shape object. The storage happens at
ShapeStyleContext::onCreateContext which is run when the <a:fillRef>
tag is opened. The ShapeStyleRef object contains the idx value and a
Color object which will contain the inner tag <a:schemeClr>.

The Color object has been modified to store the string value of
schemeClr. The storage happens at ColorValueContext::onStartElement
which is run when the tag <a:schemeClr> is opened.

Later, Shape::createAndInsert is called by the ShapeContextHandler to
create the actual XShape, this happens when the tag <wps:wsp> is
closed. createAndInsert puts idx and schemeClr values into the
InteropGrabBag property of the XShape with the name StyleFillRef.

On export time, when the shape data is written at
ShapeExport::WriteCustomShape, we added a call to
DrawingML::WriteShapeStyle. This method will check the existence of
the InteropGrabBag property in the shape, read the StyleFillRef prop
inside it and output the proper XML to the style definition.

DrawingML::WriteShapeStyle also writes some mock tags into the
<wps:style> because we found that they are compulsory. We will
replace them with the proper data in further patches.

The method putPropertyToGrabBag was added to the Shape object for
convenience.

The data files for some /sd/qa/ unit tests were updated to reflect
the new property StyleFillRef inside the InteropGrabBag.

Change-Id: I5ffa5242852461a1a709a8f169d40f0d7a2c9aa3
ooxml: Preserve shape theme attribute for solid fill

Users can select the fill color for a shape among the theme-defined
colors. This results in the following XML:

  <wps:spPr>
    ...
    <a:solidFill>
      <a:schemeClr val="accent2"/>
    </a:solidFill>
    ...
  </wps:spPr>

Now we store both the original fill color and the name of the
theme-defined color, if it exists, on the import phase. They are put
into the InteropGrabBag of the shape with the names
OriginalSolidFillClr and SpPrSolidFillSchemeClr. Additionally, we
needed to to store the decoded theme color inside StyleFillRef.

On the export phase we have to take into account several combinations
of factors:
* If the final color for the shape fill is different from the
  original color, we must ignore any theme attributes and write the
  new color.
* If the fill color is unchanged and some theme color exists, we must
  write the theme color.
* If the fill color is unchanged and no theme color exists, we must
  check if the original color matches the style-defined color. If it
  does, we must not write any <a:solidFill> tag.
* Otherwise we must write the <a:solidFill> tag with the RGB color.

The method putPropertiesToGrabBag was added to the Shape object for
convenience.

The data files for some /sd/qa/ unit tests were updated to reflect
the new properties inside the Shape InteropGrabBag.

Change-Id: If0915c5442872a8acab0a8a081f60c89c97277bd
ooxml: unit test for shape theme attributes preservation

This tests checks that the shape style attribute for fill color is
preserved, that the theme attibute for shape fill is preserved too
and that the interaction between them and direct assignment of some
color works properly.

Change-Id: Ia934c46731ed38be14ed851e083d0ed6fc151b01