Packets with variable size.

* Now the task is responsible for to determine when the packet is complete.
* Created new test to validate partial packets implementation.
* Now WorkerThread tries to read all data and invoke the task when there is data to be processed.

Issue #6 and #17.