Support converting arm assembly to armasm syntax

This syntax is supported by the official arm tools and
by Microsoft's assembler.

This currently only supports microsoft's assembler, the
armasm assembler in RVCT requires a few more tweaks to
be able to build libav.

The preprocessing is done by invoking cpp (do we need to
be able to override this?).

The converted output is written to a file instead of using
a pipe, since Microsoft's armasm can't read the input from
a pipe.
Do simple keyword replacements, commenting out and translation at the end

This allows the main part of the preprocessor to work with source
in the actual input format and not have to look for directives
in their translated form (which can be different depending on the
target).
Fix handling of thumb symbols

The RE for matching apple- was typoed in ea29a0e6c. Additionally,
reverse the order of the two checks, since we use $3 and $4 to refer
to parts of one of the REs. Prior to ea29a0e6c the as_type check
was a plain string comparison, not a RE.
Comment out gnu specific stack notes on apple and armasm

Libav itself doesn't output these unless targeting ELF (where
they don't need to be commented out), but other projects (e.g.
OpenH264) have them unconditionally in the source.
Strip out more MSVC C compilation flags that don't apply when assembling

This is for use with OpenH264, which specifies more MSVC specific
compiler flags than libav does.
Add an option for forcing arm mode source to be assembled as thumb

This does some rudimentary conversions of instructions that aren't
available in thumb mode.

This allows building OpenH264 for Windows Phone 8 (and Windows RT),
which only supports thumb mode, and the OpenH264 arm assembly is
hardcoded for arm mode.

This is similar to how libvpx supports assembling in thumb mode - the
source itself is arm mode only, but a perl script can replace
instruction combinations that aren't supported in thumb mode. This
is a small subset of those conversions.
Factorize the list of arm condition codes to a variable
Support object files being named .obj instead of .o
aarch64: do not add the optional ', lsl #0' for byte vectors

Although it is allowed it does not make much sense since the immediate
is already 8bits.