Add a pattern-matching `match` macro.

Allows patterns consisting of literal numbers and strings, and lists
of patterns (including limited slicing via a trailing ".. symbol").
e.g.

(def foo (fn (a b)
  (match a
    (1 b)
    ("bar" (+ b 1))
    ((1 2) (+ b 2))
    ((x .. y) y)))))
Merge pull request #11 from huonw/match

Match expressions