Cell handling code duplication in channel.c

In 336c856e :

  • channel_get_var_cell_handler() and channel_get_cell_handler() looks very similar
  • channel_write_cell(), channel_write_packed_cell() and channel_write_var_cell() is mostly duplicated code.
  • so are channel_queue_cell() and channel_queue_var_cell()

We should refactor to reduce the code duplication.