Remove hardcoded dependency on C preprocessor

Invoke the preprocessor through the specified compiler. This make sure
that we also run this with the same compiler as we're building with.
Update specs for DependencyGrapher
accept a Symbol as the second argument to Signal.trap(…).

On 1.9 mode Signal.trap can take a Symbol as a second argument in place of a
String. For example, you can say:

  Signal.trap :SIGUSR1, :DEFAULT
  Signal.trap :SIGUSR1, :SIG_DFT
  Signal.trap :SIGUSR1, :SIG_IGN
  Signal.trap :SIGUSR1, :IGNORE

I found this while trying to use Foreman on Rubinius. It has code that uses
:DEFAULT in place of "DEFAULT".

Side-note:
MRI 1.9 & 1.8 behavior is to accept any string or symbol as the second argument.
Rubinius(1.8 & 1.9) mode raise when the second argument isn't something it
understands. This is valid on CRuby, but not rubinius:

  Signal.trap :SIGUSR1, "ninja"
add specs.
Merge pull request #2321 from robgleeson/patch/signal-trap

accept a Symbol as the second argument to Signal.trap(…).
Fix indent in generated code
Move CompiledCode specs to correct directory
Generate global symbol names for primitives

Before the primitive hookup logic actually took around 0.2s on my system
of the startup time. This was due to how the algorithm works, basically
resulting in number of primitives squared symbol lookups.

With generating these names like this, we remove the string to symbol
lookup needed, resulting in 0.2s faster startup on my system.
Update specs to make Rubinius compliant with masgn return values

Previously, Rubinius was explicitly non-compliant with regards to the
return values of mass-assignment expressions, always returning true
instead.
Return the correct value from mass-assignment expressions

Fixes #1765