Refactored to avoid issues with group speakers
When a collection of speakers are grouped together, only one of them can be used to control the group, this meant that the Controller class didn't work on the other speakers, it was unable to accept actions, and reported an incorrect state
Now there is a Speaker class with limited functionality, and the Controller class extends from this to allow actions
Additionaly the static methods were moved out to the Network class