HTTP Content Encoder allow EmptyLastHttpContent

Motiviation:
The HttpContentEncoder does not account for a EmptyLastHttpContent being provided as input.  This is useful in situations where the client is unable to determine if the current content chunk is the last content chunk (i.e. a proxy forwarding content when transfer encoding is chunked).

Modifications:
- HttpContentEncoder should not attempt to compress empty HttpContent objects

Result:
HttpContentEncoder supports a EmptyLastHttpContent to terminate the response.
@normanmaurer @trustin - I think this makes the compression encoders with a `finished` member consistent.  I am just not familiar enough with all the compression codecs to know if this is consistent/correct behavior across them all.  For example is it possible there is something else in the pipeline that may want to consume the input in this case?  It seems like the Lz encoder will always write something to the output [see start of Lz conditionals here](https://github.com/netty/netty/blob/master/codec/src/main/java/io/netty/handler/codec/compression/FastLzFrameEncoder.java#L114) and so maybe this adds to the argument of keeping the `out.writeBytes(in);`?