Resolve pathnames with :back.

Remove as much :back as possible at MAKE-PATHNAME time.

Handle any left :back in UNPARSE-NATIVE-UNIX/WIN32-NAMESTRING the same as
:up.
improve generic function encapsulation

Perform the encapsulation in an :AROUND method specialized on
STANDARD-GENERIC-FUNCTION, so that subclasses transparently inherit
encapsulation handling while still being able to override the standard
COMPUTE-DISCRIMINATING-FUNCTION behaviour.  (This is method structure
that AMOP allows implementations, as the :AROUND method is an
extending one -- it calls CALL-NEXT-METHOD)
define sane escaping in win32 pathname namestrings

We can't use \\ to escape, because it's the directory separator; that
way lies madness.  There's some evidence from random web searching that
win32 users might not be too confused with ^ as an escape character, so
try that.
x86-64 allows R12 as an index register in SIB addressing.

As R12 is wired to the current thread ptr, this fix has little practical
impact, but corrects the inconsistency that "lea Rn,[rax+r12]" is
effectively identical to "lea Rn,[r12+rax]" except the former caused
the assembler to crash and the disassembler to be confused.