Allow specifying 0 as the default number of threads when instantiating an EventLoopGroup

- Fixes #1426
- We already allow a user instantiate an EventLoopGroup with the default number of threads via the default constructor, so I think it's OK although it's not always optimal.
Add ByteBufProcessor and ByteBuf.forEach(...)

- Fixes #1378
- Needs to provide optimized forEach implementations though.
Deprecate ByteBufIndexFinder

- Prefer ByteBufProcessor
- Related: #1378
Use (fromIndex, toIndex) instead of (index, length) for ByteBuf.forEachByte(...)

- Related: #1378
Optimize derived buffers' forEachByte(...) implementation

- Related: #1378
Fix test failure in SlicedByteBuf / Add tests for built-in ByteBufProcessor impls

- Related: #1378
Split ByteBuf.forEachByte() into forEachByte() and forEachByteDesc()

- Related: #1378
- As suggested by @liqweed
Update Javadoc of ByteBufProcessor and MessageListProcessor

- in response to @shacharo's suggestion
Merge remote-tracking branch 'upstream/master'