Don't skip creating an empty target file when given no content to write to it.
Split ContentReaderWriter into ContentReader and ContentWriter.
Fixes for ContentReader and ContentWriter

Get-Content:
- Implemented Get-Content -Raw and Get-Content -Raw -Encoding
- Return whole lines from Get-Content -Encoding instead of truncating lines at 4096 bytes
- Use a Decoder object to convert bytes to strings instead of an Encoding object. The former handles multi-byte characters split across a buffer boundary.

Set-Content:
- Use an Encoder object to convert strings to bytes instead of an Encoding object. The former handles code points split across .Net Char's.