Several XMP & IPTC metadata handling fixes:
* Broken 'for' loop would add keywords under the wrong IPTC tags (stupidly
  used the same named iteration variable in two nested loops, leading to
  hilarity as usual).
* Accept XMP "dc:keywords" as synonym for the more standard "dc:subject".
* Strip spaces in some places where it needed to be done.
* Add semicolon where it was needed, oops a typo 'out + "; "' that should
  have been 'out += "; "', D'oh!
* Guard against IPTC data that is TOO large (it ends up encoding the length
  as a 16 bit int, so we truncate if it's bigger).