2/12/2013 - mmucklo
first draft of unit tests for singularize, update some expressions

2/8/2013 - mmucklo
Update inflection singular, plural and non-inflectable rules from RoR

5/22/2009 - mmucklo
Add static caching (i.e. memoization)

12/18/2008 - Forked from http://kuwamoto.org/2007/12/17/improved-pluralizing-in-php-actionscript-and-ror/ (MIT license)

Original Thanks:
----------------
Thanks to http://www.eval.ca/articles/php-pluralize (MIT license)
          http://dev.rubyonrails.org/browser/trunk/activesupport/lib/active_support/inflections.rb (MIT license)
          http://www.fortunecity.com/bally/durrus/153/gramch13.html
          http://www2.gsu.edu/~wwwesl/egw/crump.htm

Original Changelog:
-------------------
Changes (12/17/07)
  Major changes
  --
  Fixed irregular noun algorithm to use regular expressions just like the original Ruby source.
      (this allows for things like fireman -> firemen
  Fixed the order of the singular array, which was backwards.

  Minor changes
  --
  Removed incorrect pluralization rule for /([^aeiouy]|qu)ies$/ => $1y
  Expanded on the list of exceptions for *o -> *oes, and removed rule for buffalo -> buffaloes
  Removed dangerous singularization rule for /([^f])ves$/ => $1fe
  Added more specific rules for singularizing lives, wives, knives, sheaves, loaves, and leaves and thieves
  Added exception to /(us)es$/ => $1 rule for houses => house and blouses => blouse
  Added excpetions for feet, geese and teeth
  Added rule for deer -> deer

Changes:
  Removed rule for virus -> viri
  Added rule for potato -> potatoes
  Added rule for *us -> *uses
