primitives: use NULL chroma satd func pointers for blocks not capable of satd

If the block is not a multiple of 4x4, then chroma satd measurements are not
possible, so we will disable chroma residual measurements for these block sizes
(and thus only measure luma residual)
motion: chroma ME [CHANGES OUTPUTS]

include chroma distortion in satd decisions when --subme > 2 and chroma blocks
are multiples of 4x4

This required making the MotionEstimate class more aware of PicYuv and its
indexing scheme so that it could find the correct chroma pixels to interpolate.
This allowed me to merge the setSourcePlane() method into the lookahead's
version of setSourcePU.

This requires further work. The Reference class needs to generate weighted
chroma planes if subpel refine will use chroma residual cost. Until this is
fixed, the chroma subpel steps will use unweighted reference pixels.
reference: weight chroma planes of reference pictures if using chroma satd
asm: chroma_vpp[4x4] for colorspace i422 in avx2: improve 228c->184c
api: add some blank lines
analysis: fix chroma predictions for 2Nx2N bidir at zero mv

Valgrind discovered that the chroma predictions were not in fact predicted
analysis: avoid redundant MC work
asm: chroma_vpp[32x32] for colorspace i420 in avx2: improve 3881c->1933c
doc: describe what happens when psy-rd is too high for bitrate
asm: chroma_hpp[4x4] for colorspace i420 in avx2 improve 217c->192c