Stdlib improvements

An assortment of small things:

* `pixie.string/substring` and `subs`
* `->` and `->>`
* `last` and `butlast`
* `IMeta` supported on PersistentList and PersistentHashSet

And something nice: `pixie.test/assert=` (and the new `pixie.test/assert`) now report what went wrong, which helps tracking down errors if they are real assertion failures, not something else like missing functions etc. An example:

```
user => (require pixie.test :as t)
user => (t/assert= 3 4)
Error:  in internal function throw

RuntimeException: Assert failed 3 != 4
user => (t/assert= (+ 3 4) 5)
Error:  in internal function throw

RuntimeException: Assert failed (+ 3 4) = 7 != 5
user => (t/assert false)
Error:  in internal function throw

RuntimeException: Assert failed false is false
user => (t/assert (map? nil))
Error:  in internal function throw

RuntimeException: Assert failed (map? nil) is false
```

This should make it easier to find errors in the tests, as the exact expression (both source and result) is printed.