update pipeline to call teardown of output workers when :workers > 1

fixes https://github.com/elasticsearch/logstash/issues/2178
well, we shouldn't introduce a extra queue for a single worker, but I think it should be initialized in a way that it is consistent to iterate through plugins independently if there's one or many. I could be done with something like this:
```ruby
def worker_setup
    if @workers == 1
      @worker_plugins = [self]
    else
      define_singleton_method(:handle, method(:handle_worker))
      @worker_queue = SizedQueue.new(20)

      @worker_plugins = @workers.times.map { self.class.new(params.merge("workers" => 1, "codec" => @codec.clone)) }
      @worker_threads = @worker_plugins.map.with_index do |plugin, i|
        Thread.new(original_params, @worker_queue) do |params, queue|
          LogStash::Util::set_thread_name(">#{self.class.config_name}.#{i}")
          plugin.register
          while true
            event = queue.pop
            plugin.handle(event)
          end
        end
      end
    end
  end
```

Also, I note that `@worker_threads is not used anywhere, does it need to be an instance var?