When unpacking, don't unpack patch files.
Since we can declare the patches as an array in global scope, _but_ we
cannot use $WORKDIR in there (they are not extracted in proper
$WORKDIR but rather $WORKDIR/all, then copied/hardlinked for the
various implementations), there is no point into unpacking them when
using .bz2.
Rather, leave it to epatch to deal with them and for the rest of the time.

Don't create generic wrappers when installing for a single implementation.
Since we have a few packages that can only be installed for JRuby, and
that thus wouldn't work with any of the selected implementations, and
a few that installs only for Ruby 1.8 (and thus would break if 1.9 was
selected), try to reduce their impact by only producing generic
wrappers when installing for multiple implementations.
This should produce a totally working system after updating from 1.9,
among other things.
To make sure that the wrappers generated by different revisions of
ruby-fakegem.eclass are properly identified, also add the CVS ID of
the eclass in the comments of the generated wrapper.
At the same time add the same specification about generation to the
gemspec files, so that we can identify “older” specifications quickly.

Define each_ruby_test in ruby-fakegem only if a test task is defined.
With this change you won't get further output during test phase if
there is no fakegem test going to be executed. Packages will still be
able to inject their each_ruby_test function to run custom test
commands.

Add a RAKE_FAKEGEM_BINWRAP variable.
This way to just add command wrapping we won't be needing to define a function.
This also defaults, the same as original rubygems, to all the binaries installed, but it can be tweaked.

Change the binary wrapper code.
Instead of using the Gem code to find the gem itself (which only
worked for gems whose library was named after the gem, and failed for
spec and other packages), ask Gem for its system path (which will be
dynamic depending on the Ruby implementation used) and affix the
hardcoded relative path of the wrapper (which we know at merge time).
Tested with rake, bluecloth, rspec, Ruby 1.8, 1.9 and JRuby.

This form allows you to request diffs between any two revisions of this file.
For each of the two "sides" of the diff,
select a symbolic revision name using the selection box, or choose
'Use Text Field' and enter a numeric revision.