Fix MemoryStream::Peek() and add test for fix

`MemoryStream::Peek()` did not return `'\0'` if `src_ == end_`, but `Peek() == '\0'` is used in parsing in the `GenericReader`. Without this change, parsing with `MemoryStream` as the `InputStream` could result in a segmentation fault.