Maintain bitvector of original slashes from manifest when canonicalizing

Intended as a more satisfactory resolution to #843.

(Still testing, but useful enough to take a look now.)
Fixed. The other strchr loop is ok because it's on an std::string (post whatever C++ thing fixed the rules).