euler: Use argument for maxProduct
Various changes; Broken State monad