Fix product folds

Cherry-picking parts of pull request #431 (93fa218, d30715a)
flip.flip return self

Cherry-picking pull request #437 (83eb038)
NonEmptyList append with tail sharing.

Cherry-picking 52f7885