Role::PPI: Pump characters through the File object.

Saving to the file object prior to storing in the cache,
means we can ask the file object for the bytes version of whatever was
stored there, and use that to generate the same MD5 that was generated
in the ppi_document_for_file method.

( Fixes bug #236 for me )
fix encoding on handle in D::Z::Utils::AuthorDeps
clean up binmode on some open/slurp/spew operations
use Path::Tiny for slurping and spewing