Robustification of ODIDControlChannel based on cvp2ri-429

ODIDControlChannel now properly handles multiple command channels and
 better handles empty commands and closes.

Also robustified ODIDMediaEngine.process_command(). All it's currently doing
 is printing the command/params. But it wasn't properly checking the output
 of String.split().

Tested with multiple command channels active and live simulator output.
 Found and fixed a couple issues dealing with empty commands and another
 case of badness with GLib.List. Using Gee.ArrayList resolved the issues.
 (GLib.List.append() seems to be cloning/deep copying objects)
Do these `close()` statements do anything, since the streams are about to go out of scope? Is this just so we can catch IOErrors?