Rework Elixir meetup exercise

Don't require lots of duplication or metaprogramming

See #950