Better macroexpand

These commits add `macroexpand`, using the code by @olasd, to core, along with a simple test and documentation. This macroexpand is not a special form:

```clojure
=> (macroexpand '(-> (a b) (x y)))
(u'x' (u'a' u'b') u'y')
```

This obsoletes PRs #308 and #309.