We document collators must return -1, 0, 1, rewrite the reverse collator
to translate byte differences into those values.
Simplify the binary search of row-store internal pages by removing the
test/branch for the 0th key of the page that we hit every time through
the loop and instead detect that case after the loop exits; we may do
an additional comparison in the case of searching down the left-side of
the tree, but that's less likely and still probably worth doing.

Our collators are required to return -1, 0, or 1, tell the compiler so
it can use tests against a 0/1 register instead of the more complicated
negative/positive tests.

Separate out the common code for when an application collator is/is-not
configured.

Replace calls to WT_LEX_CMP_SKIP with WT_LEX_CMP where we know the
collator is configured, the compiler probably figured it all out, but
there's no reason to make it do that work.

Minor variable cleanup, there's no reason to set local variables until
they're actually useful; again, the compiler probably figured it out,
but no reason to make it do that work.
Our collators are required to return -1, 0, or 1, tell the compiler so
it can use tests against a 0/1 register instead of the more complicated
negative/positive tests.

Minor restructuring so all the binary search loops look the same.
error: 'indx' may be used uninitialized in this function
[-Werror=maybe-uninitialized]
update
Reset the skiplow/skip high counts if we ever do a comparison against
the 0th key, the 0th key may be garbage, and the comparison meaningless.
Re-order the comparison cascading if/else clauses to put the least
likely option (a match, where cmp == 0), last.
Minor code shuffle to make the flow a little more obvious.
Reverse change to use -1, 0 and 1 tests against collation returns,
debugging application collators that return a range of values is a
pain.
Merge branch 'develop' into row-store-internal-page
Merge pull request #1050 from wiredtiger/row-store-internal-page

Row store internal page search optimizations.
Instead of byte-copying the WT_IKEY structure and data, call the standard
underlying supporting function.  Clang is complaining about the internal
page binary search function going off the end of the allocated memory: I
don't see a bug here, but there's no reason to create the WT_IKEY structure
in a non-standard way, and maybe I'm just missing something.
I believe the clang complaint is because the skiphigh/skiplow values are
longer than the 0th key on the internal page, and when we try and skip
over the initial bytes, we read past the end of the key.  Skiphigh/skiplow
are a lot more valuable in terms of performance than avoiding the branch
instruction, give up: don't do the 0th key comparison inside the internal
loop.