unescapeHTML() bug fix

unescapeHTML() unescapes two layers of escape codes that have been escaped multiple times. For example:

  '&amp;amp;gt;'.unescapeHTML() == '>' // true
  '&amp;gt;'.escapeHTML().unescapeHTML() != '&amp;gt;' // true

My change fixes this so that only one layer of HTML escaping is unescaped:

  '&amp;amp;gt;'.unescapeHTML() == '&amp;gt;' // true
  '&amp;gt;'.escapeHTML().unescapeHTML() == '&amp;gt;' // true