Fix bug in Factors() in alexlib

Factors() was testing to just beyond the square root of the input
number, meaning that for some numbers we added a pair of factors twice.
For example, Factors(20) would test 4 (the correct max) and also 5,
meaning that both 4,5 and 5,4 were added to the list of factors.

Additionally add functions to deal with proper factors, which are all
factors except for the number itself. So the factors of 10 are 1, 2, 5,
10, and the proper factors are 1, 2, 5.
Add Problem023.cpp