Distributed resource allocation for self-organizing small cell networks: a game theoretic approach