Refine types again. Reimplement KleeneImplication

Had another go at the types. Managed to reimplement
Kleene implication, this time introduced the concept
of Analogy Implication and then tigthened the types
to make it strictly Kleene.