Extend inner environments with lhs case bindings
Extend inner environments with lhs case bindings

Previously, we'd stopped doing this, but it leads to issues with matches
on functions, e.g.

```
(deftype A (F [(Fn [] Int)]))

(defn m [a]
  (match a
    (A.F f) (f)))

(defn main []
  (println* (m (A.F (fn [] 123)))))
```

Will result in a runtime error if the environment isn't extended.

eriksvedang/Carp,carp-lang/Carp,carp-lang/Carp,carp-lang/Carp,eriksvedang/Carp