Change Fact#valid? to errors to allow better Exception messages
Add a first performance benchmark

* On MRI 2.0.0 typically 30 ms for 1000 * "graph << (Fact.new(...))"
* On JRuby 1.7.3 typically 400 ms for 1000 * "graph << (Fact.new(..))"

Not immediately found the cause of the large discrepency. In Jruby,
just creating the data_fact objects from the Factories seems to
consume 330 ms (for the 1000 loops) of the 400 ms total.
Improve the performance_spec

* Inspired by Benchmark
* use a rehearsal step
* use a larger number of iterations (10K instead of 1K)
* now jruby (58 us) is only lightly slower then MRI (38 us),
  which seems more reasonable
* with larger amounts of iterations (100K), JRuby becomes faster
  (48 us) and MRI ruby becomes slower (58 us), probably because
  Garbage Collection kicks in.