changelog: extract a _string_unescape() to mirror _string_escape()

Authored by martinvonz.

Description

changelog: extract a _string_unescape() to mirror _string_escape()

We use our own _string_escape() to encode the "extras" field. Then we
use codecs.escape_decode() to escape it. But there's also a little
workaround for dealing with escaped text that looks like octal numbers
since the fix for
https://bz.mercurial-scm.org/show_bug.cgi?id=3156. This patch extracts
the call to codecs.escape_decode() along with the fix for octal
numbers and puts it in a _string_unescape(). It also updates the test
to check for the octal-number case from the aforementioned bug.

As you may have suspected, I want to be able to reuse this new
function later.

Differential Revision: https://phab.mercurial-scm.org/D6184