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/
```
1. expected should come before actual in spec
2. should assert original one remained unchanged

e.g.

```ruby
original =  "This is a good day to die"
assert_equal "This is a good day", original.remove(" to die")
```

(and to keep tests small and focused, can test the dup logic in different test than the multiple argument logic)
assert_equal "This is a good day to die", original