analysis: encodeResidue rewrite, much improved --rd 0

it's not clear --rd 0 is always correct, but I can encode long clips without
hash mistakes and at reasonable bitrates (compared to previous --rd 0). I
suspect there is still problems with passing in residual to
residualTransformQuantInter() and getting it back in the same ShortYuv instance
cudata: use static array of absolute depth broadcast set functions

this commit changed the value arguments to these set functions to match the data
type of their array, forcing one cast in analysis.cpp to avoid a warning.
cudata: push more data type casts out to callers
search: use intptr_t for picture stride variables
cudata: simplify allocation / initialization interfaces

the callers shouldn't need to know details about partitions or coeff buffer
sizes
cudata: remove default arguments for getPUAboveRightAdi(), getPUBelowLeftAdi()
slice: move numPartitions and numPartInCUSize from FrameData to SPS

these fields never change, so it made no sense to have copies in every FrameData
they are based on CTU size, so SPS made sense
entropy: drop last use of g_winUnitX, g_winUnitY
cudata: cache numPartInCUSize as a class static

The obliviates a lot of pointer dereferences in some key functions
search: re-combine --pme with --no-pme code paths
search: fix a change of outputs from f3bd6e5a880a, always zero unused refs

it's not clear why this affects outputs, but it seems better to err on the side
of the data being initialized.
predict: rename members for clarity, save work in singleMotionEstimation()

The first thing singleMotionEstimation() did was call getPartIndexAndSize()
to get the PU part index and dimensions. Then it called prepMotionCompensation()
which did the exact same thing, storing its outputs into member variables.
(after predInterSearch() had already done it twice as well)

Now singleMotionEstimation() and predInterSearch() both directly use the
variables initialized by prepMotionCompensation(). Now when the master thread
calls its own singleMotionEstimation(), there is much less redundant work
predict: enforce calling conventions, fix wrong side-effects

use references and consts where possible, order arguments to follow the
convention of memcpy (dest, src)

This exposed a bug in addWeightBi() and addWeightUni(), they were modifying the
PU size variables directly instead of making chroma versions. This explains why
it seemed to best necessary at times to make seemingly redundant calls to
prepMotionCompensation.

as a side-effect, this commit also removes the 1k 'avg' buffer that bidir
allocated on the stack and instead uses the existing tmpPredYuv
cudata: remove unused method