Add List.foldRight

We use this function to generalize applying some function and an
initial value to iteratively reduce a list to a single value.

We can also redefine our sum and product functions, in which there is
some duplication among them, in terms of foldRight, to reduce that
duplication and make our code more concise.
Redefine List.sum and List.product in terms of List.foldRight
Solve Exercise 3.7