Make `String#remove` and `String#remove!` accept multiple arguments

Quite often when I use `String#remove` I need to remove multiple patterns from the string at once. This change makes method handle multiple arguments without breaking backwards compatibility.

Before:

```ruby
["this", "that", /and that/].each do |pattern|
  text.remove! pattern
end
```

After:

```ruby
text.remove! "this", "that", /and that/
```
perhaps add coverage to ensure the `dup` is used (e.g. original string is not mutated on the `remove`)