InputCommon: Don't base default radius of analog sticks off of their name.
JIT64: Fix fmul rounding issues

Thanks to magumagu's softfp experiments, we know a lot more about the Wii's
strange floating point unit than we used to. In particular, when doing a
single-precision floating point multiply (fmulsx), it rounds the right hand
side's mantissa so as to lose the low 28 bits (of the 53-bit mantissa).

Emulating this behavior in Dolphin fixes a bunch of issues with games that
require extremely precise emulation of floating point hardware, especially
game replays. Fortunately, we can do this with rather little CPU cost; just ~5
extra instructions per multiply, instead of the vast load of a pure-software
float implementation.

This doesn't make floating-point behavior at all perfect. I still suspect
fmadd rounding might not be quite right, since the Wii uses fused instructions
and Dolphin doesn't, and NaN/infinity/exception handling is probably off in
various ways... but it's definitely way better than before.

This appears to fix replays in Mario Kart Wii, Mario Kart Double Dash, and
Super Smash Brothers Brawl. I wouldn't be surprised if it fixes a bunch of
other stuff too.

The changes to instructions other than fmulsx may not be strictly necessary,
but I included them for completeness, since it feels wrong to fix some
instructions but not others, since some games we didn't test might rely on
them.
Interpreter: apply the same odd rounding to single multiplies as the JIT
Merge pull request #834 from FioraAeterna/fixfmulrounding

JIT64: Fix fmul rounding issues
Merge pull request #810 from lioncash/controller-interface

InputCommon: Don't base default radius of analog sticks off of their name
Rename Log2 and add IsPow2 to MathUtils for future use

Also remove unused pow2/pow2f functions.
JIT64: optimize multiplication by immediate constants

Factor out common code and handle a few more common cases.
JIT64: optimize rlwinmx/rlwinix and friends

Take advantage of movzx as a replacement for anding with 0xff or 0xffff, and
abuse loads from the register cache to save ops.
JIT64: Optimize cmpXX

Use TEST instead of CMP if we're comparing against 0 (rather common), and
optimize the case of immediate compares further.
JIT64: optimize sign/zero-extend

Also remove some comments that no longer apply since x86_32 was dropped.
JIT64: use XOR to load immediate zeroes
JIT64: avoid using LEA for adds when not necessary
JIT64: tweak srwx/slwx

Register B gets immediately moved into te shift register, so even if a == b
it doesn't need to be loaded.
JIT64: Optimize carry handling

Carries are rather common and unpredictable, so do them branchlessly wherever
we can. Optimize some special cases of carries where possible.
JIT64: support merged branching for rlwinmx, too

Not quite as common a branch instruction as cmpwi, but close.