Omit XML namespace declaration for <iq/> stanzas

Only the child elements of <iq/> stanzas are qualified by the namespaces
in question, not the <iq/> stanzas themselves.

This change just clarifies the code.  It doesn't alter the behaviour, as
those <iq/> stanzas are handed over to jlib:iq_to_xml/1, and that
function ignores the 'xmlns' attribute anyway.
XEP-0198: Don't exit on socket send failure

If stream management is enabled, don't exit the c2s process when
ejabberd_socket:send/2 fails, but close the socket instead.  This gives
the client a chance to resume the session.

Thanks go to Matthias Rieber for reporting the issue, providing detailed
logs, and testing the fix.
XEP-0198: Cosmetic change: Omit redundant guard

The stream management state is never 'pending' when the c2s FSM is in
the 'session_established' state.
XEP-0198: Don't drop session on failed resume

The 'previd' value provided by the client during a session resume
request includes the client's JID and ejabberd's session ID.  If there
is a session for the requested JID but with a different session ID,
resumption should fail, but that session shouldn't be closed.  This
commit makes sure the latter won't happen.

In practice, this will only make a difference in odd corner cases.
Fix odbc_port option processing
Merge pull request #218 from weiss/omit-iq-xmlns

Omit XML namespace declaration for <iq/> stanzas
Merge pull request #221 from weiss/omit-redundant-guard

XEP-0198: Cosmetic change: Omit redundant guard
Merge pull request #222 from weiss/keep-session-on-failed-resume

XEP-0198: Don't drop session on failed resume
Merge pull request #220 from weiss/handle-send-failure

XEP-0198: Don't exit on socket send failure
Let ejabberd_c2s always use fsm_next_state/2

Make sure any logic implemented in ejabberd_c2s:fsm_next_state/2 is
always applied.
XEP-0198: Cosmetic change: Simplify state change

When the FSM goes into the 'wait_for_resume' state, let fsm_next_state/2
take care of updating #state.mgmt_state and of writing the log line.
This doesn't change the behavior, but simplifies the code.
Merge pull request #225 from weiss/use-fsm-next-state

Let ejabberd_c2s always use fsm_next_state/2
Merge pull request #226 from weiss/simplify-state-change

XEP-0198: Cosmetic change: Simplify state change
XEP-0198: Terminate session on queue overflow

On queue overflow, terminate the c2s session instead of just dropping
items from the queue.  This makes sure all stanzas are either delivered
or bounced.
Merge pull request #206 from weiss/xep-0198

XEP-0198: Terminate session if stanza queue becomes too large
XEP-0198: Cosmetic change: Reuse event handler

On stanza queue overflow, pass a message to self() using the exclamation
mark operator instead of send_all_state_event/2.  This allows for
reusing the existing handler for 'kick' events.
Merge pull request #227 from weiss/xep-0198

XEP-0198: Cosmetic change: Reuse event handler
Log just one [info] message on Carbons negotiation

Log one instead of three [info] messages when XEP-0280 (Message Carbons)
support is enabled or disabled successfully.  On failure, log an
additional [warning].
Merge pull request #228 from weiss/turn-down-carbons-logging

Log just one [info] message on successful XEP-0280 negotiation
Process 'Contact' headers more accurately (as per RFC3261)