Add backports as a hard dependency inside abstract_type

* It makes use of 1.9 only features that may not work in 1.8.
Change test files in gemspec to be more explicit
Fix bug where the abstract methods had a arity of 0

* Abstract methods should not have any arity because they need to
  accept the same arguments as the concrete methods eventually will.
  Without asking explicitly in the DSL for the arity or parameters,
  allowing any number of arguments is the next best behaviour.