feat: Allow multiple report types to be used

This change refactors the way the coverageReporter configuration
works by adding a new 'reporters' property.  This property is a list
of configurations for any reporters that should be used.  This allows
the user to ask for multiple output types at the same time.

For example:

coverageReporter: {
    dir : 'coverage/',
    reporters: [{
      type: 'html'
    }, {
      type: 'text'
    }, {
        type: 'cobertura'
    }]
}

This configuration outputs reports in html, text, and cobertura
from the same run of karma.

Note: the code is designed to be backwards compatible with the older
method of specifying the options.
fix: delay collector disposal until all file writing has completed.