(Bug 44696) AskApi to support valid XML using the SMW\ApiQueryResultFormatter

AskApi XML output is broken and this change is trying to fix this.

Code coverage: 100%
CRAP: 26

ApiQueryResultFormatter allows for the ApiSMWQuery class to be less murky
in a sense that it carried to many responsibilities at the same time, now
formatting of an result array is entirely handled by ApiQueryResultFormatter.

## Narative

Reason for all this is that XML doesn't feel comfortable with non-standardized
identifiers which makes the XML parser very unhappy. This means to
overcome this limitation we have to re-format the result array in order
for indentfiers to be compliant (without spaces, apostrophe, quotes etc.)

## XML Output Structure

<?xml version="1.0"?>
<api query-continue-offset="1">
  <query>
    <printrequests>
      <printrequest label="" typeid="_wpg" mode="2" format="" />
      <printrequest label="Has title" typeid="_wpg" mode="1" format="" />
      <printrequest label="Modification date" typeid="_dat" mode="1" format="" />
    </printrequests>
    <results>
      <subject fulltext="Lula" fullurl="http://localhost/mw/index.php/Lula" namespace="0" exists="1">
        <printouts>
          <property label="Has title">
              <value fulltext="Foo" fullurl="http://localhost/mw/index.php/Foo" namespace="0" exists="" />
          </property>
          <property label="Modification date">
              <value>1369592083</value>
          </property>
        </printouts>
      </subject>
    </results>
    <meta hash="b22d1b7a0b48df31d4220d11031500cf" count="1" offset="0" />
  </query>
</api>

## See also

[1] https://gerrit.wikimedia.org/r/#/c/64447/

Change-Id: Icbc92c9e74161c1ec626775bf6f95703a6df8de1