x86-64: cabac_block_residual assembly

RDO: ~20% faster than C
Bitstream: ~50% faster than C
1-2% faster overall, highest on preset superfast/fast/medium.
Add slice-min-mbs feature

Works in conjunction with slice-max-mbs and/or slice-max-size to avoid overly
small slices.
Useful with certain decoders that barf on extremely small slices.

If slice-min-mbs would be violated as a result of slice-max-size, x264 will
exceed slice-max-size and print a warning.
Add slices-max feature

The H.264 spec technically has limits on the number of slices per frame. x264
normally ignores this, since most use-cases that require large numbers of
slices prefer it to. However, certain decoders may break with extremely large
numbers of slices, as can occur with some slice-max-size/mbs settings.

When set, x264 will refuse to create any slices beyond the maximum number,
even if slice-max-size/mbs requires otherwise.
x86inc: fix some corner cases of SWAP

SWAP with >=3 named (rather than numbered) args
PERMUTE followed by SWAP with 2 named args
used to produce the wrong permutation
Fix undefined behavior in x264_ratecontrol_mb
Fix array overreads that caused miscompilation in gcc 4.8
x86: correctly check stack alignment for Atom hadamard_ac

Regression in r2265 (only affected compilers with broken stack alignment,
like ICL on win32).
Fix y4m input with C420paldv colorspace
Show "avs: no" --disable-avs option instead of empty string
Disable mbtree asm with cpu-independent option

Results vary between versions because of different rounding results.
weightp: improve scale/offset search, chroma

Rescale the scale factor if the offset clips. This makes weightp more effective
in fades to/from white (and an other situation that requires big offsets).

Search more than 1 scale factor and more than 1 offset, depending on --subme.

Try to find the optimal chroma denominator instead of hardcoding it.

Overall improvement: a few percent in fade-heavy clips, such as a sample from
Avatar: TLA.
OpenCL lookahead

OpenCL support is compiled in by default, but must be enabled at runtime by an
--opencl command line flag. Compiling OpenCL support requires perl. To avoid
the perl requirement use: configure --disable-opencl

When enabled, lookahead thread is mostly off-loaded to your OpenCL capable GPU
device.  Lowres intra cost prediction, lowres motion search (including subpel)
and bidir cost predictions are all done on the GPU.  MB-tree and final slice
decisions are still done by the CPU.  Presets which do not use a threaded
lookahead will not use OpenCL at all (superfast, ultrafast).

Because of data dependencies, the GPU must use an iterative motion search which
performs more total work than the CPU would do, so this is not work efficient
or power efficient. But if you have spare GPU cycles to spare, it can often
speed up your encode. Output quality when OpenCL lookahead is enabled is often
slightly worse in quality than the CPU quality (because of the same data
dependencies).

x264 must compile its OpenCL kernels for your device before running them, and in
order to avoid doing this every run it caches the compiled kernel binary in a
file named x264_lookahead.clbin (--opencl-clbin FNAME to override).  The cache
file will be ignored if the device, driver, or OpenCL source are changed.

x264 will use the first GPU device which supports the required cl_image
features required by its kernels. Most modern discrete GPUs and all AMD
integrated GPUs will work.  Intel integrated GPUs (up to IvyBridge) do not
support those necessary features. Use --opencl-device N to specify a number of
capable GPUs to skip during device detection.

New in this patch version:
* An MD5 hash of the OpenCL source is written to clbin file and verified on read
* out-of-tree builds have been fixed
* GPU detection has been improved; all GPUs in each platform checked
* Switchable graphics environments are detected (Intel iGPU, AMD dGPU) and
  OpenCL is disabled
* Added param.opencl_device_id so API users can pass in an explict cl_device_id
* Fixed minor issue that caused AMD and NV outputs to diverge slightly
* .gitignore is now aware of build and runtime remnants for OpenCL
* improved detection of AMD Southern Island devices (for non-vectorization)
* xxd build dependency replaced with perl dependency

Developed by MulticoreWare with support from AMD and Telestream
x86inc: create xm# and ym#, analagous to m#

For when we want to mix simd sizes within one function.
Merge commit 'e05364d43c8c79ced40feb7a21452c7f82501341' into 7mod

Conflicts:
	common/common.c