Added heterogenous equality to be used for object equality, defined
preorders and posets as categories with additional properties, and did
some reorganizing.  For example, I renamed Functor.agda to Funct.agda
because I was getting name clashes with the standard lib.
Merge branch 'dev'