Remap registers to avoid clobbering the neon registers q4-q7

According to the calling convention, the registers q4-q7 should be
preserved by functions. The caller (generated by the compiler) could
be using those registers anywhere for any intermediate data.

Functions that use 12 or less of the qX registers can avoid
violating the calling convention by simply using other registers instead
of the callee saved registers q4-q7.

This change only remaps the registers used within functions - therefore
this does not affect performance at all. E.g. in functions using
registers q0-q7, we now use q0-q3 and q8-q11 instead.
Push clobbered neon registers on the stack

According to the calling convention, the registers q4-q7 should be
preserved by functions. The caller (generated by the compiler) could
be using those registers anywhere for any intermediate data.

Functions that use more than 12 of the qX registers must push
the clobbered registers on the stack in order to be able to restore them
afterwards.

In functions that don't use all 16 registers, but clobber some of
the callee saved registers q4-q7, one or more of them are remapped
to reduce the number of registers that have to be saved/restored.

This incurs a very small (around 0.5%) slowdown in the decoder and
encoder.
fix idr interval issue
Merge pull request #480 from volvet/fix-idr-interval-issue

fix idr interval issue
mv range setting refactor
Merge pull request #482 from sijchen/me_refactor1

mv range setting refactor
add code coverage test.
use lcov & gcov to generate coverage report
use genhtml to generate html pages
on ubuntu: sudo apt-get install lcov will install
these two cmd lines.
remove trailing white spaces
Merge pull request #484 from licaiguo/add-gcov

Add gcov
Merge pull request #463 from mstorsjo/dont-clobber-neon-registers

Avoid clobbering the neon registers q4-q7

Review and verified by zhilwang
nzc bug fix and clear
add according to review opinion
Merge pull request #486 from huili2/nzc_bug_fix

nzc bug fix and clear