fix escaped ')' in sigil

This fixes #2840 

Now we have:

```
iex(1)> ~S(Interpolation?: #{3+0.14} ' '\))
"Interpolation?: \#{3+0.14} ' ')"
iex(2)> ~S(foo\))
"foo)"
```
Thank you! However, we need to make this work for all sigils terminators. I think that, to do so, we just need to match on `[$\\, Last|Rest]` and add a new test that ensures it works for something like `~S[foo\]]`. Could you please amend?