Add lookupWith, splitWith, and splitLookupWith to the Map interface

These functions allow a custom comparison function to be substituted for
`compare` when looking up values in and splitting maps.

The original `lookup`, `split`, and `splitLookup` functions are then
implemented as their -With counterparts curried with the `compare`
function from Prelude.