Fixed bug in Vector#repeated_combination

Vector#repeated_combination did not yield all repeated combinations when n was
equal to the Vector's size. This was caused by blindly copying over the code used
for #combination, including a clause which didn't apply to #repeated_combination.
A spec has been added to catch this case.
Vector#combination always yields Arrays (for consistency)

Previously, #combination would usually yield Arrays, but there was one case where
it would yield a Vector. Although our principle is generally that operations on
Hamster collections should return Hamster collections, these Arrays will generally
be ephemeral -- just used to perform a calculation in an iterator block, and not
retained. So Arrays are used, simply for performance.
Optimized Vector#repeated_combination for ~2x speed boost
Optimized Vector#combination for ~1.5x speed boost
Added Vector#permutation
Added Vector#repeated_permutation