Extend media.js to be able to handle all times of video/audio/data communications

This is initial work for supporting audio and data only communications as well as other combinations.

It extends the interfaces to media.js to add possibilities for selection of different types of calls, and adds unit testing for all the interfaces.