Fix Path to handle types correctly

Fix behaviour to be the same as `:filename`
Add specs
Add utility functions for dealing with the native encoding
Fix System to handle paths correctly

Use Path utility functions to convert paths
Adds specs
Correct typo in halt docs
Fix File and Exception to handle paths correctly

Use `Path` to handle paths (instead of `String` and `:filename`)
Adds specs
Move path string conversion to `FileError` or `FileCopy`
Misc fixes for handling paths correctly

Replaces use of the `String` module for `char_list` conversion with
`Path` where appropriate.