Fix OpArg::WriteRex with 8-bit memory operand.

Previously he function was misbehaving because of a missing check for
whether an 8-bit operand was a register operand; it would therefore
emit unnecessary REX prefixes, incorrectly assert on 32-bit targets, and
could potentially emit wrong code in rare cases (like a memory to register
operation involving AH.)

Also, some cleanup while I was in the area to make the function easier to
read.
Common: Add a generic class for accessing bitfields in a fast and endianness-independent way.

The underlying storage type of a bitfield can be any intrinsic integer type,
but also any enumeration.

Custom storage types are supported if the following things are defined on the storage type:
- casting 0 to the storage type
- bit shift operators (in both directions)
- bitwise & operator
- bitwise ~ operator
- std::make_unsigned specialization
UnitTests: Add tests for BitField.
BPMemory: Use the new BitField class in two selected structures.
BPMemory: Expose the pixel_format and zformat fields in PE_CONTROL as enumerations.
BPMemory: Make use of BitField in a number of structures.
Merge pull request #204 from neobrain/bitfield_cleanup

Bitfield cleanup
PixelShaderGen: Cleanups and fixes for tev combiners.

Fixes issue 4674.
PixelShaderGen: Implement tev combiner lerping in a faster way which also reproduces hardware behavior perfectly.

The new behavior has been verified to be correct by hardware tests. This is an improvement over the old code, which was just a guess.
PixelShaderGen: Cleanups.
Software renderer: Use color combiner configuration for alpha combiner compare mode inputs.

As pointed out by dolphin-emu/hwtests@f684f2498.
Software renderer: Properly calculate tev combiner output.

As pointed out by dolphin-emu/hwtests@461476112.
Merge pull request #210 from magumagu/writerex-fix

Fix OpArg::WriteRex with 8-bit memory operand.
Use unaligned stores to save XMM regs to stack.

On Win32, the stack isn't aligned, so aligned stores will cause crashes.
Compute stack usage correctly in ABI_CallFunctionPC.

(The numbers need to be consistent with the actual usage, or else the stack gets corrupted.)
Save registers before calls in x86-32 JIT.

I have no idea what the person who added RegistersInUse() was thinking,
but not correctly saving registers is an easy way to end up with crashes.
BPMemory: Fix an enum to use u32 as its underlying type.
Merge pull request #193 from neobrain/tev_combiner_fixes

PixelShaderGen: Cleanups and fixes for tev combiners.
Delete a bunch of old audio HLE cruft.

This commit intentionally breaks audio output from HLE Zelda UCode; no other functional change.
Merge pull request #211 from magumagu/win32-jit-fixes

Win32 jit fixes