support random port

Set the port option to 0 to jcukeforker at a random port.
Add support for multiple report formats

taken from upstream
update AbstractListener