Refactored BonusType to behave like an enum while still being
extensible. Fixes #35
Added an argument checker. Fixes #37