Valgrind cleanliness for scan1 test.

Reported by Huanchen Zhang via Andy Pavlo.
String::substring(int, int) should be called substr.

Perl's is called substr; C++'s and Javascript's too.
Json update.
Library updates.
Remove key<>::ikeylen.

And change the value used for "has a suffix" keylenx.
Remove stringbag::equals_sloppy; call string_slice::equals_sloppy outside.

Cleaner. Also some const correctness.
Use key_bound directly, don't rewrite it.

Not much performance difference if any.
Whitespace.
Get rid of ::key_compare() function.

In favor of NODE.compare_key(KEY, POS). This is a little weird in terms
of argument order, should patch that.
Correct bug in a7f4bed9c: Use cursor's permutation.

Since the underlying permutation might change underneath us,
causing confusion.
This fence is no longer necessary.

Thanks to ecae1fa1f6d9828c1d4a89718fa580493e48f41a and related.
New ksuf_matches protocol in unlocked get.
More compact code for find_locked/find_insert.
Documentation nit
Masstrees support trie compression on layers.
Remove unused
key_lower_bound returns both index and position.
Add urlsimple test