[TACHYON-152] Refactor client side to allow different write implementations