Initial import of Ruby extension/compiler.
Merged Ruby code generation into main protoc binary.

There's no reason to build a separate protoc-gen-ruby plugin binary if
this language support is integrated into the protobuf distribution
proper. IMHO we should take this approach for the language generation
and ensure that the Ruby extension in ruby/ only installs a Ruby
extension .so, nothing else. This split is how Python works today too.
Added Ruby Gem build setup. Updated upb.
Ruby extension: Fix for a GC bug and a new test.

- Fix for GC bug: on dup, RepeatedField did not extend its size until all
  members were dup'd. This meant that there was a window of vulnerability
  in which a GC mark would not see the live objects, and false frees might
  occur. The code now ensures that each dup'd RepeatedField slot becomes a
  GC-marked slot (by extending the length) before any other calls into the
  VM.

- Added the stress test that found this issue.

- Moved tests to the tests/ directory.

- Removed extraneous test shell script.
RepeatedField updates; test fix; C/Ruby module split.

- Added RepeatedField + operator to append lists.
- Separated StressTest and BasicTest into different modules and isolated
  their symtabs. It appears that a test driver was running both in a
  single process, and their symbols/message definitions were
  conflicting.
- Renamed the C extension to "protobuf_c" and defined a toplevel Ruby
  file "protobuf.rb". This will serve as a place to add pure-Ruby layers
  on top of the C extension core.