correctly upgrade the IsList to the monadic contituents: liftIsList

We pay the price of IncoherentInstances (hopefully I can re-fix this)

Cleanups coming next
cleanups!

But look at this:

*Data.Generic.Diff> diffM (return [True, False]) (return [True, False]) :: EditScript (BFam (E IO)) (E IO [Bool]) (E IO [Bool])
Cpy !(:) $ Cpy !True $ Cpy !(:) $ Cpy !False $ Cpy ![] $ End

Isn't it gorgeous?
simplify
simplify
get away with IncoherentInstances

at the price of some code duplication
cleanup a bit
reduced code duplication