Add compatibility for Ruby 1.8

Resolves backtrace:

$ iblinkinfo.pl | /tmp/topology.rb -f svg -o top1
/tmp/topology.rb:230: wrong argument type Symbol (expected Proc) (TypeError)
  from /usr/lib/ruby/gems/1.8/gems/graph-2.5.1/lib/graph.rb:152:in `instance_eval'
  from /usr/lib/ruby/gems/1.8/gems/graph-2.5.1/lib/graph.rb:152:in `initialize'
  from /usr/lib/ruby/gems/1.8/gems/graph-2.5.1/lib/graph.rb:567:in `new'
  from /usr/lib/ruby/gems/1.8/gems/graph-2.5.1/lib/graph.rb:567:in `digraph'
  from /tmp/topology.rb:210

Tested-by: Paul Morgan <jumanjiman@gmail.com>

Tested on these Ruby versions:
* RHEL 5:    ruby 1.8.5 (2006-08-25) [x86_64-linux]
* RHEL 6:    ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
* Fedora 17: ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]

Test procedure:
I saved the output from iblinkinfo in a test environment, then
provided that as input for this patch using each version of Ruby listed above.
Add recommendation to README

In a medium-to-large IB infrastructure, generating SVG output is orders of
magnitude faster and results in much smaller output files. For example,
in one of our environments, the SVG is a few MB while the PNG is 12 GB!
Merge pull request #1 from jumanjiman/compatibility

Add compatibility for Ruby 1.8, recommand svg output for big fabrics in README
Add dynamic ports discovery (switches are not longer hardcoded to have 36 ports), enhance label generation for fabric clients and remove unused code.
Explicitly require rubygems to ensure Ruby 1.8 compatibility.