sacrificed struct {rgb,yuv} for lesser code duplication
added {yuv,rgb}_image, do rgb<->yuv inplace