Use maps:from_list/1 on maps:intersect_with/3
Use maps:from_list/1 on maps:intersect_with/3

The current implementation is not efficient when
the maps being compared are mostly distinct.
It happens that collecting all keys and building
the map once at the end is the most efficient
way of implementing intersection.

Benchmarks show this approch is often 4x faster in
the mostly distinct cases, otherwise it behaves
within 5-10% of the current implementation. The only
case it is considerably slower is when working with
small sets of integers (~10 elements) but those
are done in nanoseconds anyway.

Benchmaking code and results:
https://gist.github.com/josevalim/759f3a9c2613119d3e38cd4224840d32

ferd/otp,bjorng/otp,jj1bdx/otp,rlipscombe/otp,getong/otp,ferd/otp,mikpe/otp,dumbbell/otp,isvilen/otp,jj1bdx/otp,mikpe/otp,getong/otp,bjorng/otp,rlipscombe/otp,jj1bdx/otp,bjorng/otp,erlang/otp,mikpe/otp,potatosalad/otp,vinoski/otp,emacsmirror/erlang,jj1bdx/otp,g-andrade/otp,bjorng/otp,vladdu/otp,g-andrade/otp,isvilen/otp,vladdu/otp,dumbbell/otp,vladdu/otp,emacsmirror/erlang,mikpe/otp,potatosalad/otp,uabboli/otp,mikpe/otp,potatosalad/otp,uabboli/otp,vladdu/otp,jj1bdx/otp,rlipscombe/otp,vinoski/otp,ferd/otp,isvilen/otp,uabboli/otp,jj1bdx/otp,vinoski/otp,dgud/otp,vinoski/otp,bjorng/otp,getong/otp,potatosalad/otp,mikpe/otp,g-andrade/otp,erlang/otp,getong/otp,dumbbell/otp,bjorng/otp,mikpe/otp,emacsmirror/erlang,erlang/otp,dumbbell/otp,getong/otp,dgud/otp,potatosalad/otp,potatosalad/otp,dgud/otp,vinoski/otp,g-andrade/otp,isvilen/otp,potatosalad/otp,erlang/otp,bjorng/otp,uabboli/otp,vinoski/otp,erlang/otp,dumbbell/otp,rlipscombe/otp,vladdu/otp,rlipscombe/otp,mikpe/otp,bjorng/otp,ferd/otp,vinoski/otp,emacsmirror/erlang,g-andrade/otp,uabboli/otp,potatosalad/otp,ferd/otp,emacsmirror/erlang,vladdu/otp,getong/otp,getong/otp,jj1bdx/otp,dgud/otp,emacsmirror/erlang,rlipscombe/otp,g-andrade/otp,isvilen/otp,jj1bdx/otp,g-andrade/otp,dgud/otp,uabboli/otp,dumbbell/otp,bjorng/otp,bjorng/otp,ferd/otp,potatosalad/otp,mikpe/otp,isvilen/otp,dumbbell/otp,isvilen/otp,isvilen/otp,erlang/otp,emacsmirror/erlang,rlipscombe/otp,vladdu/otp,jj1bdx/otp,potatosalad/otp,vinoski/otp,dumbbell/otp,dgud/otp,emacsmirror/erlang,getong/otp,ferd/otp,emacsmirror/erlang,erlang/otp,dgud/otp,uabboli/otp,vladdu/otp,ferd/otp,vinoski/otp,dgud/otp,vinoski/otp,rlipscombe/otp,isvilen/otp,rlipscombe/otp,uabboli/otp,jj1bdx/otp,g-andrade/otp,dumbbell/otp,getong/otp,vladdu/otp,dgud/otp,erlang/otp,dumbbell/otp,g-andrade/otp,g-andrade/otp,erlang/otp,emacsmirror/erlang,rlipscombe/otp,getong/otp,ferd/otp,mikpe/otp,dgud/otp,erlang/otp,isvilen/otp,uabboli/otp