- turned the variable all_gear_combinations into a function called
  get_gear_combinations. this is more efficient, since if we don't
  allow negative movements, the number of possible gear combinations
  is significantly reduced.

- added a more complicated solution to the qunit tests.

- next I'm going to add an object pool to reuse the fractions.