add timeout parameter to sendIQ'
remove IQResponseTimeout from IQResponse

IQResponseTimeout does not model an XMPP type but is instead an implementation specific signal that a user-set timeout has occured. Removing it keeps our representation closer to the defined protocol.

add IQSendError to keep the result of sendIQ' clear
add Annotations to received stanzas

Annotations allow plugins to attach information to processed stanzas, for example to signal that the stanza was received encrypted.