[CDAP-331] Allows more flexibility on the data type for consuming from stream for MapReduce

- Added auto-detection based on Mapper/Reducer input type to support Text or BytesWritable to carry stream event body
- Added support for user to provide a custom StreamEventDecoder to transform StreamEvent into Key/Value pair for MR input.
can it happen that there is a mapper, but setStreamEventDecoder cannot determine the type and returns false? In that case, we should not try to derive it from the reducer.