Let host insert the newline when replacing characters

Ideally, issuing `r<Enter>` in normal mode would have the same effect as issuing `s<Enter><Esc>`.  Currently, this behaves differently if the host performs some magic while inserting the `<Enter>`, e.g. while editing documentation comments in C#.

When replacing characters using `r` with the `Enter` key, this change lets the host perform the insertion.  Although the code that performs the `ReplaceChar` operation has been reorganized, the logic for the case where the replacement character is not `Enter` has not changed.  There are already tests for both cases and they still pass.

Example for C# content:

```csharp
/// <summary>
/// cat dog
/// </summary>
```

Issue `r<Enter>` on the space between `cat` and `dog`:

```csharp
/// <summary>
/// cat
/// dog
/// </summary>
```