small refactor so we can add a trampolined version of cofree
adding trampolined unfoldT
fixing cofree unfolding
adding test to prove no SOEs on unfold
fixing SOE for bind
getting actual equals working
formatting and removing uneeded nat for cofreequal
cofree test OptionEqual was wrong, fixing
adding unapply and changing to abstract class over trait
Merge pull request #702 from vmarquez/cofree_trampolined

Cofree is now trampolined to allow more stack safety