Refactor formatters with Luhn validation, and add a dedicated calculator service

- [x] Create util `Luhn` class
- [x] Update providers to use this class to create luhn-compliant numbers
- [x] Update tests to remove custom luhn validations

Refs #403
Fixed in 4c3e635