Do you want to make a PR?
FlowControlHandler breaks auto-reading
_FlowControlHandler_ breaks auto-reading (i.e. the channel does not auto-read even though its config has auto-read set to true). This happens when auto-read is turned on when the queue is not empty. The reason is that _FlowControlHandler.read()_ does not pass the call to the _ChannelHandlerContext_ if at least one message has been dequeued. This is a problem when _FlowControlHandler.read()_ has been called as a result of auto-read having been turned on (_DefaultChannelConfig.setAutoRead()_ calling read() in case of _autoRead && !oldAutoRead_).
Taking _ctx.read();_ out of the body of the if statement fixes the bug and I also did not notice any unwanted side effects. I.e.:
```
public void read(ChannelHandlerContext ctx) throws Exception {
    if (dequeue(ctx, 1) == 0) {
        shouldConsume = true;
    }
    ctx.read();
}

``` 
### Expected behavior
Auto-reading.

### Actual behavior
Reading the messages that are already in the queue and then no auto-reading.

### Steps to reproduce
On a channel with a FlowControlHandler in its pipeline, turn auto-read off while a message is in the process of being added to the handler's queue.  When the message is already in the queue, turn auto-read back on.

### Minimal yet complete reproducer code (or URL to code)
It is a bit hard to reproduce with simple code so I hope that you understand the issue from my description.

### Netty version
any

### JVM version (e.g. `java -version`)
any

### OS version (e.g. `uname -a`)
any

handler/src/main/java/io/netty/handler/flow/FlowControlHandler.java
handler/src/main/java/io/netty/handler/flow/FlowControlHandler.java
diff --git a/handler/src/main/java/io/netty/handler/flow/FlowControlHandler.java b/handler/src/main/java/io/netty/handler/flow/FlowControlHandler.java
index 1f7926fdf2f..f316907a7e5 100644
--- a/handler/src/main/java/io/netty/handler/flow/FlowControlHandler.java
+++ b/handler/src/main/java/io/netty/handler/flow/FlowControlHandler.java
@@ -141,8 +141,8 @@ public void read(ChannelHandlerContext ctx) throws Exception {
             // messages from upstream and once one arrives it need to be
             // relayed to downstream to keep the flow going.
             shouldConsume = true;
-            ctx.read();
         }
+        ctx.read();
     }
 
     @Override
