Equivalence classes on requests.

This commit introduces a new function dataFetchEquiv, that allows to
define equivalent requests and makes sure that for a given equivalence
class, at most one request will be performed in a given round (with the
equivalent requests of the same round yielding the same result).

The next step will be to also look in the cache for already performed
equivalent requests, so that at most one request from a given
equivalence class is performed (not just in one round).

Signed-off-by: Philipp Kant <philipp@infinipool.com>