DiscoveryThread: Pass actual exception that has been catched to onDiscoveryError().

(At least until there's some better way implemented to notify about the actual error)
DiscoveryThread: Only notify about error if thread is still running.

We do not want to notify about IOException that is thrown when the
socket is closed while we wait for incoming packets.
Add sample application: IntentChat.

IntentChat is a simple chat application that allows devices to exchange messages
in the same local network without connecting to anything.