Transmit data via fiber.yield(data)/resume(data)

Hi Clément,

This PR does the following,
 * fiber.yield(data) can send data to fiber.resume() and vice-versa (as in coroutines.yield()/resume())
 * fixed a bug in handler.readsplit where a client.write(data) followed by client.write(split) on client would sometimes cause a server-side client.readsplit(split) do fail.
 * added a client-repeater-server test which involves the following tests:
   * tests serialization/deserialization of torch objects
   * tests communication of data through fiber.resume(data)/fiber.yield()
   * tests a tcp repeater between a client and a server (a chain)

Although we do not test it explicitly, the test case could be extended to demonstrate chained remote procedure calls using fibers.