Data.List: add product(), combinations()

* Data.Listにproduct(), combinations()を追加しました。
* Data.List: permutations()をproduct()を使用した実装に書き換えました。
`a:r`