An Adaptable, Role-Based Simulator for P2P Networks