Refactor separator character & escaping logic to reduce GC churn

Tests run ~12% faster, and sparsing of large structures should incur a *significantly*
smaller GC penalty, since we can now memoize the Regexp objects that make separator
escaping possible.