add clojure.lang.PersistentVector encoding/decoding

Previously, `clojure.lang.PersistentVector` was not special-cased on writing
and reading. This resulted in fressian-encoded streams, containing Clojure
vectors, being coerced on reads into `java.lang.ArrayList`. Coercion here is
a bit surprising and potentially causes unexpected errors.

Here we explicitly mark `clojure.lang.PersistentVector` instances with the
`vec` tag on writes and upon reads decode these back to Clojure's vector type
by casting them with a call to `vec`.