Bug 51003: Template parameter handling cleanup

* Avoid dirty diffs in unmodified parameters by tracking all optional
  whitespace. This eliminates a large number of syntactic diffs.
  Example:
  [[Barack Obama]] drops from 65 to 7 syntactic diffs.

* Strip whitespace from named parameter keys. This fixes several duplicate key
  edge cases and provides clients with a properly normalized parameter dict.

* Strip whitespace from named parameter values and strip trailing whitespace
  from positional parameter values. This avoids people removing trailing
  newlines from parameter values, which messes up multi-line template
  formatting. Leading whitespace in positional parameters can be significant
  for indent-pres, so is preserved. Trailing whitespace in positional
  parameters is rarely used significantly, so we don't allow its modification
  or creation in the VE.

* Use default ' = ' spacing for new parameters. We now have a way to identify
  new parameters, so we could also try to match spacing of other parameters in
  an existing template.

Change-Id: I1899678a8869088a62d503b5f2009d4815c87c71
Merge "Bug 51003: Template parameter handling cleanup"