Add lz4 compression tunnel

tested on local machine.
a bigger buffer doesn't harm anyway. But I'm jib at using "+ 100" still. 
There are two solutions come to my mind:
1. Try to get the metadata size. Or at least compress some datas with bz2 and make sure the result is 2048. Then compress it with lz4 to check the size of result.
2. when compress plaintext with lz4, check the size of result. If it's bigger than 2048, we should send plaintext. So we need one more bit as a compression flag:
| length | flag | content |
The flag here should be a boolean, receiver should prase it to know if the content is compressed.