Fix multiple sort criteria

With larger datasets, the sorting was incorrect. Now, instead of
sorting the array multiple times, multiple criteria are considered
in a single pass.
Some formatting
Fixed sort bug
Allow non-primitive keys.
Switched to pure JS xxhash impl for browser compatibility.
Revert to previous 'key not found' behaviour.
Using variable length hash for keys.
Removed debug statement.
Don't hash empty values.
noHashKeys no longer breaks object keys.
Inlined _getHash().
Removed es-hash dep.
Removed es-hash dep.
Manually merged updates from source.
Fixed missing brace.