guard fix: two successive 'when' means boolean 'OR' not 'AND'

is_integer(n) will match and make any call to Factorial.of with a negative value infinite
Merge pull request #3 from rbenaley/master

guard fix: two successive 'when' means boolean 'OR' not 'AND'