fix handling IQ responses

IQs sent to the server may evoke responses with "from" attribute different
from the "to" attribute the request was sent to. Specifically, it might
be either empty, the JID of the server (that is, only domain part set) or either
the bare or full JID of the client.
improve documentation and export annotated functions
quench warnings
use cloneTChan instead of dubTChan in dupSession
remodel functions to expose STM actions rather than STM datat types

TVars and TChans expose the wrong interfaces (e.g. a user shouldn't be
able to add IQRequestTickets to the inbound channel or change the answer
recevied after sending an IQRequest).
add pullMessageA and remove Annotations from pullMessage
additional cleanups and documentation fixes
add changelog
update cabal file