text: Title: [Q] MultiThreadMapData and AugmentImageComponents?
  Body: I read the tutorial "Efficient DataFlow", which was very helpful.
  I have a question. The tutorial includes two cases.
  
  **multiprocess**
  ```
    ds0 = dataset.ILSVRC12('/path/to/ILSVRC12', 'train', shuffle=True)
    ds1 = AugmentImageComponent(ds0, lots_of_augmentors)
    ds = PrefetchDataZMQ(ds1, nr_proc=25)
    ds = BatchData(ds, 256)
  ```
  
  **multithread**
  ```
    ds0 = dataset.ILSVRC12('/path/to/ILSVRC12', 'train', shuffle=True)
    augmentor = AugmentorList(lots_of_augmentors)
    ds1 = MultiThreadMapData(ds0, nr_thread=25,
              map_func=lambda dp: [augmentor.augment(dp[0]), dp[1]], buffer_size=1000)
    # ds1 = PrefetchDataZMQ(ds1, nr_proc=1)
    ds = BatchData(ds1, 256)
  ```
  {`AugmentImageComponent`, `PrefetchDataZMQ`} vs. {`AugmentorList`, `MultiThreadMapData`}.
  
  So, if I have to use `AugmentImageComponents` (because it has `index=(0, 1)` argument so I can apply same augmentations to images and labels equally), then is there no way to use `MultiThreadMapData`?
  
  An example I can think of is something like  `map_func=[augmentor.augment(dp[0]), augmentor.augment(dp[1])]`, but then, I imagine two different augment will apply to dp[0] and dp[1] respectively (due to random factors). 
  
  I'm curious if one can use a `multithread` way when using `AugmentImageComponent(ds, augmentors, (0, 1))`.
  