Add IQReplyFilter (SMACK-533)

This filter drops all packets which are not a valid reply to an IQ
request. In particular, it checks for packet id, from address and packet
type.

In the absence of checks on the from address, it is possible for other
clients to fake an answer to a IQ request.

For a discussion of the issues, see the thread "Spoofing of iq ids and
misbehaving servers" from 2014-01 on the jdev@jabber.org mailing list
and following discussion in February and March.
Process only requested roster results (SMACK-538)

Prior to this change, Smack processes each RosterPacket (which is not of
type IQ.Type.RESULT) as a roster result.

Any other client on the XMPP network can send such a packet (not only
our server). This allows a malicious party to overwrite our Roster.

This patch changes smack so that a RosterPacket is discarded if it is
not a reply to a roster request.
Add logging to IQReplyFilter

If the IQReplyFilter rejects a packet with a valid packet id, it is
either a spoofed packet or the filter is not lenient enough to let
through valid answers from (broken) servers. In the latter case, we want
easy debuggability.