Restore Gem::Version::new behavior from < 2.1

Gem::Version::new used to return the same class as the input object but
now returns a Gem::Version if called with the same input from a
subclass.  This broke backward compatibility.

This broke from #447 which was a performance improvement change.
This commit maintains the same behavior except when Gem::Version was
subclassed and the version cache (which reduces GC) is skipped.

See #447 for the original commits

Fixes #805