Added support for Random as an argument to shuffle and shuffle!

Added support for Random as an argument to shuffle and shuffle!

Refactored random gem to use DATA instance type and hold mt_state inside the DATA_PTR instead of in an instance variable. Not sure why this design was different from the Time gem, maybe it was old?