Pairing algorithm weighted on times paired

It's messy as hell, but it technically works. I changed the unpairable hash on the test because I assumed every user will just start with an empty unpairable array. Otherwise, I could just throw in a has_key? check in the algorithm.