More efficient distinguishable_colors

- Implements an O(n*k) algorithm
- Returned values all have the type of the seed