Fix multi bytes decoding error at boundary

when a multibyte character is not fully contained in the input buffer, some unread bytes are still left in the buffer. So it would not parse file correctly afterward. To handle it correctly, it might need a temporary buffer. Instead of another temporary buffer handling, we could utilize existing logic on `ensure` method.

Also even if it prepare the exact size of buffer for character decoding, input byte can be corrupted. In case of the corrupted input, it ignore left bytes or throw MalformedException based on the configuration.