Rubinius uses the public methods `new_range` and `new_reserved` to
create new sub-arrays in methods like `Array#slice`, `Array#(range)`
Here, Rubinius does not call `Array.allocate` to create the new object
resulting in the monitor not being initialized which then causes errors
NoMethodError: undefined method `synchronize' on nil:NilClass.
when calling any methods of the new sub-array. By overwriting the two
methods and explicitly initializing the monitor there, we can ensure
that the monitor is always initialized correctly.