Add shuffle functionality

@deini @alexmckenley 
We should probably just have a single event called 'shuffle' and we can just pass true or false as part of the event data like so:

```
event.publish('shuffle', true);
event.publish('shuffle', false);
```