Changed the 'Dao.Strcut.Update' monad to a "newtype" because when it is defined as an ordinary "type" GHC does not seem to be able to infer the 'Control.Monad.State.Class.get' or 'Control.Monad.State.Class.put' methods when it a 'Control.Monad.State.StateT' monad lifts my 'Dao.Predicate.PTrans' predicate transformer monad, the inferred get and put actions result in an infinite tight loop. It was necessary to declare a "newtype" and explicitly instantiate these methods. Although I am proud to say that it only took me about 20 minutes to fully instantiate the 'Dao.Struct.Update' newtype into 'Control.Monad.Monad', 'Control.Monad.MonadPlus', 'Data.Functor.Functor', and 'Control.Monad.State.MonadState' -- in fact, I got the instantiation for 'Control.Monad.State.MonadState' right on my very first try. It shows how far I have come as a Haskell programmer (yet so much more to learn).
Changed README to an ".md" format so it looks pretty on GitHub :)
Also added a section on Dao's foreign interface to Haskell, even though this very interface is causing me a lot of grief at the moment.