More granular right management

Hi guys,

First I'd like to thank you for your amazing work! Licode is really cool to use.

I’m trying to implement a system where people can see/hear the main speaker but are not allowed to speak/show video by themselves. However, I wanted them to be able to chat with each others.

This was not possible with the actual configuration. They were either "Presenter", with the right to publish everything or viewer, with no data channel. Since I wanted the data channel only, I tried to code something which would allow me to have it. This is the smoothest way I could think of.

With this solution you specify what you want and what you do not want. If you don’t specify a fine-grained option (like data or audio), it’s authorized by default.
I know it breaks a bit the existing system, but I thought it was better this way than creating more roles like PublishDataOnly or PublishDataAudioOnly. 
I'd prefer it to return an unauthorized error in case of trying to subscribe/publish a forbidden media (audio, video or data).