Extended Query Handling Functionality

1. We now listen to a query, we store it, check if it can be serviced
and send preliminary acknowledgement. [NOTE: Query storing is broken, to
be fixed ASAP!]

2. When a query is possible, we flood all the valid providers with a
request and then start listening for messages passed on to this thread
(According to queryNo).

3. We listen to "ProviderResponse" messages and keep filling our list of
providers who have accepted the query, till the time we get enough
users. Any providers who respond after that get a rejected message.

4. We send out final confirmation to the data requester (query being
Serviced) and to providers (do record data).

TODO:
1. Parse 'ProviderData' responses from providers and send that data at
the end to the requester.
2. Implement a time out system in case our providers do not reply after
accepting the query!