sum_of_multiples: extend tests for algorithm logic and input validation

Extend the test set with the following test cases:
- Trigger a bug in an inclusion/exclusion algorithm implementation
  that I did and which passed the already existing tests. It captures
  a possible thinking error when implementing this type of solution.
- Feed the factors in reverse order (high to low).
- Feed the same factor multiple times.
- Feed a zero factor (should result in a ValueError).
- Feed a negative factor (should result in a ValueError).