use core.match syntax

I decided to try and use the same syntax from `core.match`. The downside is when you want side-effects. In this case, you do not have the benefit of the wrapping list for each match body and require a `do` form.

```clojure
;; Old Way
(defun foo
  ([x] (println "Hello!") (* 2 x))
  ([2] :bar))

;; New Way
(defun foo
  [x] (do (println "Hello!") (* 2 x))
  [2] :bar)
```

When you use guards or some of the more *complex* syntax of `core.match`, I think following their exact syntax is a bit easier.

```clojure
(defun funny
  [(N :guard #(= 42 %))] true
  [_] false)
```

Let me know what you think about this. Thanks!