We already get a `function_clause` here rather than `badmatch` if anything isn't a pair, due to the matching on the arg of the anonymous fun passed to `lists:all/2`. Here's the output from the original `orddict` (called `olddict` below) and this commit's version of `orddict`:

    1> olddict:from_list([{1,2,3}]).
    ** exception error: no function clause matching olddict:'-from_list/1-fun-0-'({1,2,3},[]) (olddict.erl, line 60)
         in function  lists:foldl/3 (lists.erl, line 1248)
    2> orddict:from_list([{1,2,3}]).
    ** exception error: no function clause matching orddict:'-from_list/1-fun-0-'({1,2,3}) (orddict.erl, line 69)
         in function  orddict:'-from_list/1-lists^all/1-0-'/2 (orddict.erl, line 69)
         in call from orddict:from_list/1 (orddict.erl, line 69)