Don't leak matched variables when calling `match?`

I wrapped up the `match?` macro in an IIFE and added a tiny test. The test is sorta weird so let me know if that needs to be improved at all.

Fixes https://github.com/elixir-lang/elixir/issues/1304