Delete freeEqual
Make Gosub constructor private

Exposing these allow us to observe differences because of the reified
bind/flatMap, which then break the monad laws.
Merge pull request #725 from puffnfresh/free-laws

Free laws