simplify "delivered" logic in Emit
reorder code
doc fixes
beginning work on improved error handling
use xml.Encoder to open stream
SendError implementation via interface
implement error reply via reflection
rename numbers to names
switch XEP handling to be entirely name based
rename Connection structs in XEPs to Conn
do not export resolve function
only return errors if we couldn't establish a connection
rename ConnectionError to ConnectError
wrap all Dial errors in ConnectError
cleanups
accept core.Message values for sending messages
replace pub-sub system with filter pipe and blocking function
streamError is not a stanza
Merge branch 'exp/no_channels'

Replce the pub-sub sort of system where an arbitrary number of
entities can listen for events with a blocking "NextStanza()"
function.

XEPs will receive special treatment by being implemented as a filter
pipe, which will get to see all stanzas before the user. Additionally,
XEPs can inject new stanzas.

The IM client will, under the hood, be implemented as a XEP and use
the same filter mechanism.