test: Add radial-invalid test program

This program demonstrates a bug in gradient walker, where some integer
overflows cause colors outside the range [0, 255] to be generated,
which in turns cause 'invalid' floating point exceptions when those
colors are converted to uint8_t.

The bug was first reported by Owen Taylor on the #cairo IRC channel.
pixman-gradient-walker: Make left_x and right_x 64 bit variables

The variables left_x, and right_x in gradient_walker_reset() are
computed from pos, which is a 64 bit quantity, so to avoid overflows,
these variables must be 64 bit as well.

Similarly, the left_x and right_x that are stored in
pixman_gradient_walker_t need to be 64 bit as well; otherwise,
pixman_gradient_walker_pixel() will call reset too often.

This fixes the radial-invalid test, which was generating 'invalid'
floating point exceptions when the overflows caused color values to be
outside of [0, 255].
pixman-image: Early detection of solid 1x1 repeating source images

Doesn't handle every pixel format, but for those that it does, enables early
conversion of OVER to SRC, for example.
pixman-fast-path: Add over_n_8888 fast path

This is a C fast path, useful for reference or for platforms that don't
have their own fast path for this operation.

lowlevel-blt-bench results on ARMv6:

    Before          After
    Mean   StdDev   Mean   StdDev  Confidence  Change
L1  11.9   0.1      20.4   0.2     100.0%      +71.1%
L2  10.6   0.2      16.5   0.4     100.0%      +55.8%
M   9.4    0.0      13.5   0.0     100.0%      +44.3%
HT  8.4    0.0      12.2   0.1     100.0%      +43.9%
VT  8.3    0.0      11.9   0.1     100.0%      +42.7%
R   8.1    0.0      11.5   0.1     100.0%      +41.3%
RT  5.4    0.1      7.6    0.1     100.0%      +40.3%
armv6: Add over_n_8888 fast path

This is used instead of the equivalent C fast path.

lowlevel-blt-bench results, compared to no fast path at all:

    Before          After
    Mean   StdDev   Mean   StdDev  Confidence  Change
L1  11.9   0.1      43.7   0.6     100.0%      +265.8%
L2  10.6   0.2      41.7   0.3     100.0%      +293.6%
M   9.4    0.0      42.2   0.1     100.0%      +350.6%
HT  8.4    0.0      25.6   0.4     100.0%      +202.6%
VT  8.3    0.0      22.6   0.3     100.0%      +170.7%
R   8.1    0.0      23.3   0.4     100.0%      +186.8%
RT  5.4    0.1      11.6   0.3     100.0%      +112.6%
pixman-fast-path: Add over_n_0565 fast path

This is a C fast path, useful for reference or for platforms that don't
have their own fast path for this operation.

lowlevel-blt-bench results on ARMv6:

    Before          After
    Mean   StdDev   Mean   StdDev  Confidence  Change
L1  8.2    0.0      11.3   0.1     100.0%      +38.6%
L2  7.9    0.1      10.5   0.0     100.0%      +33.3%
M   7.3    0.0      10.0   0.0     100.0%      +36.7%
HT  6.9    0.0      9.2    0.0     100.0%      +33.3%
VT  6.8    0.0      9.0    0.0     100.0%      +32.1%
R   6.6    0.1      8.8    0.0     100.0%      +31.8%
RT  4.5    0.1      6.3    0.1     100.0%      +39.7%
armv6: Add over_n_0565 fast path

This is used instead of the equivalent C fast path.

lowlevel-blt-bench results, compared to no fast path at all:

    Before          After
    Mean   StdDev   Mean   StdDev  Confidence  Change
L1  8.2    0.0      38.7   0.5     100.0%      +372.7%
L2  7.9    0.1      37.6   0.5     100.0%      +376.8%
M   7.3    0.0      38.5   0.1     100.0%      +425.6%
HT  6.9    0.0      26.1   0.3     100.0%      +279.9%
VT  6.8    0.0      24.5   0.3     100.0%      +258.0%
R   6.6    0.1      23.6   0.2     100.0%      +255.1%
RT  4.5    0.1      10.9   0.2     100.0%      +143.1%
lowlevel-blt-bench: Add in_8888_8 test
pixman-fast-path: Add in_8888_8 fast path

This is a C fast path, useful for reference or for platforms that don't
have their own fast path for this operation.

lowlevel-blt-bench results on ARMv6:

    Before          After
    Mean   StdDev   Mean   StdDev  Confidence  Change
L1  12.4   0.1      24.4   0.3     100.0%      +97.8%
L2  9.5    0.1      14.1   0.2     100.0%      +48.1%
M   9.6    0.0      14.7   0.0     100.0%      +53.1%
HT  7.9    0.0      12.0   0.1     100.0%      +52.3%
VT  7.7    0.0      11.6   0.1     100.0%      +49.8%
R   7.4    0.0      10.8   0.1     100.0%      +47.2%
RT  4.1    0.0      6.1    0.1     100.0%      +48.2%
armv6: Fix typo in preload macro

Missing "lsl" meant that cases with a 32-bit source and/or mask, and an
8-bit destination, would not assemble.
armv6: Add in_8888_8 fast path

This is used instead of the equivalent C fast path.

lowlevel-blt-bench results, compared to no fast path at all:

    Before          After
    Mean   StdDev   Mean   StdDev  Confidence  Change
L1  12.4   0.1      117.5  2.3     100.0%      +851.2%
L2  9.5    0.1      46.9   2.4     100.0%      +393.8%
M   9.6    0.0      61.9   0.9     100.0%      +544.0%
HT  7.9    0.0      26.6   0.5     100.0%      +238.6%
VT  7.7    0.0      24.2   0.4     100.0%      +212.5%
R   7.4    0.0      22.4   0.4     100.0%      +204.5%
RT  4.1    0.0      8.7    0.2     100.0%      +109.4%