Works for regular numbers (not ones like IV, or IX)
After refactor
Non-regular numerals
After refactor
Refactoring and cleanup. Some methods extracted.
More cleanup, nice names.