Added two more abstract methods

onNewLeader()
onNewRound()

basically for the same reasons as the previous onStateChange()
Added a bunch more abstract methods
Updated abstract methods to take more arguments
Approaching completion of initial attempt