move countsAsFoul logic into reason and increase foul count if necessary
reset count if a foul happened but doesn't count
added 3 foul rule as separate foul
introduce a switch that only goes one way
determine rerack
added shot clock reason
convert into switch
require rerack if 0 or 1 ball is left and only pass control if rerack is not necessary
added test for standard foul
added tests
added serios foul and test
added test