implemented buf_splice()
flags are now passed per-call, instead of at buffer creation