exts: use a protocol for Select and Match
mix: bump version and Elixir requirement