Remove the unused FORMAT_COFF define

Nothing in the project currently sets FORMAT_COFF - the other generic
branch works just fine on windows.
  modify EncoderFrame return type.
commit b99a307ab94183c32a293ad5fda8b0e3323546a0
Author: ruil2 <ruil2@cisco.com>
Date:   Wed Mar 12 13:34:27 2014 +0800

    fix typo
modify unit test for return type modification
fix typo
Use movsxd in SIGN_EXTENSION

This is what nasm ended up assembling movsx with 32 bit input to
anyway.

Keep using plain movsx for 16 bit input.

This fixes building with yasm in 64 bit mode.
Fold ALIGN 16 and the function label into WELS_EXTERN

This simplifies the structure for all x86 assembly functions,
reducing the amount of duplicated code structure.
Backup/restore the xmm6-xmm15 SSE registers within asm functions on win64

According to the Win64 ABI, these registers need to be preserved,
and compilers are allowed to rely on their content to stay
available - not only for float usage but for any usage, anywhere,
in the calling C++ code.

This adds a macro which pushes the clobbered registers onto the
stack if targeting win64 (and a matching one which restores them).
The parameter to the macro is the number of xmm registers used
(e.g. if using xmm0 - xmm7, the parameter is 8), or in other
words, the number of the highest xmm register used plus one.

This is similar to how the same issue is handled for the NEON
registers q4-q7 with the vpush instruction, except that they needed
to be preserved on all platforms, not only on one particular platform.

This allows removing the XMMREG_PROTECT_* hacks, which can
easily fail if the compiler chooses to use the callee saved
xmm registers in an unexpected spot.
Remove XMMREG_PROTECT

This isn't necessary any longer, when all the assembly routines
take care of restoring registers as necessary.
Don't clobber q4-q7 in WelsIntra16x16Combined3Satd_neon

This is similar to what is done in other neon functions. This
function was missed since it isn't covered by the current
set of unittests.
Enable the arm assembly in msvc-arm builds

This requires using the external gas-preprocessor tool that
converts the gnu assembler format sources to armasm format at
build time. This allows keeping the source files in one single
format but only converting while building.
Merge pull request #521 from mstorsjo/neon-register-backup

Don't clobber q4-q7 in WelsIntra16x16Combined3Satd_neon
Merge pull request #517 from mstorsjo/simplify-x86-asm-func-macro

Fold ALIGN 16 and the function label into WELS_EXTERN
Merge pull request #516 from mstorsjo/fix-yasm-64bit

Fix building with yasm in 64 bit mode
Merge pull request #523 from mstorsjo/wp8-arm-asm

Enable the arm assembly in msvc-arm builds
expand structure of MD and ME
Merge pull request #513 from ruil2/encoder_interface

Encoder interface
add IdctResAddPred unit test for decoder
Merge pull request #524 from sijchen/me_refactor33

Expand structure of MD and ME
Merge pull request #526 from licaiguo/IdctResAddPred-pr

add IdctResAddPred unit test for decoder
Merge pull request #519 from mstorsjo/push-xmm-registers

Backup/restore the xmm6-xmm15 SSE registers within asm functions on win64

Reviewed by zhiliang