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
The function names have been mixed up here. The test should be named testPersonalIdentityNumberGeneratesOddValuesForMales(), and vice versa with the test for females further down.
The functions themselves are correct though.