Client write refactor

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