only persistent collections should implement cloneable
add multimethod benchmark
Fix "too many open files" errors.

This patch uses `io/reader` in conjunction with `with-open` to prevent
"too many open files" errors. This happens in a browser REPL when
evaluating a file that references a couple of other files multiple
times.