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.)
This isn't 100% true: kMaxPathComponents is max after resolving ..s, while the overflow here happens before that. If you have a path like `a\..\a\..\a\..\a\..` and so on, bits_mask will overflow but `kMaxPathComponents` below will always be happy. I think it's ok to `return false` for paths with more than 32 slashes/backslashes though.