fix # wmllint: deathcheck off directive being ignored in some cases
remove files on Windows so --revert and second conversions can proceed

Windows won't allow a rename to overwrite an existing file (Error 183, file already exists).
miscellaneous spelling corrections
remove spurious string substitution from a "pango string" message

The format of this message appears to have been copied from the preceding "pango string" messages, which have a "%s" where "< or >" is. But it causes wmllint to crash with the traceback, "TypeError: not all arguments converted during string formatting".
fix wmllint-crashing map_data= bug involving empty quotes

wmllint crashes if the value for the map_data key consists of unfilled quotation marks (""), just as it does if there are no quotation marks:

----
Traceback (most recent call last):
  File "data/tools/wmllint", line 1917, in translator
    outmap = [outmap[0]] + outmap + [outmap[-1]]
IndexError: list index out of range
----

This simple fix checks to make sure that there are no side-by-side quotation marks on the line.

I also tidied up a double-space two lines down.
wmllint: fix bug with ifdef_stack

This section assumed that "#ifdef" and "#endif" would come at the very start of a line. When an author would indent the #ifdef but not the #endif, ifdef_stack.pop() would kill the starting value of None, leaving an empty list. wmllint would then crash:

  File "wmllint", line 1138, in global_sanity_check
    recruit[ifdef_stack[-1]] = (i+1, map(lambda x: x.strip(), value.split(",")))

IndexError: list index out of range

Stripping the line not only stops the crashes, but allows wmllint to pick up #ifdefs that it wasn't before.
wmllint: extend Elvish Hunter's Windows sys.argv fix to cover more cases

While testing my next commit, I discovered that EH's fix works when there is only one argument, or if the offender is the last argument, but doesn't work with multiple entries. His fix is meant to work on each argument, but the (unintentionally) escaped quote no longer serves to end the argument, causing following arguments to be considered part of the same argument.

Using split() allows us to break apart these misconjoined arguments. With rstrip(), we prevent an empty string that Windows will also complain it cannot find. However, if there are three or more arguments, there will still be lumped-together arguments unless all arguments up to the second from last also end with a backslash and quote. It is impossible to cover every possible case.

The re.sub handles the probably rare case where a backslash before a quote comes within the argument rather than at the end. However, it will only work if there is only one argument.

All this is unnecessary if the OS is not Windows (also, I haven't had the opportunity to test this on a non-Windows system to see if it has any side-effects there). So I've put it under a sys.platform condition.