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: avoid using LEA for adds when not necessary
JIT64: use LEA for the "a = b + imm" case of addi
JIT64: use xor instead of mov for loading a zero regcache immediate
JIT64: tweak srwx/slwx BindToRegister arguments

Register B gets immediately moved into the 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.
JIT64: optimize some special cases of srawix

Shift by 31 and 1, both of which are pretty common, can be done in a few less
instructions. Tested with a hwtest.
JIT64: support merged branching for rlwinmx, too

Not quite as common a branch instruction as cmpwi, but close.
JIT64: optimize carry calculations

Omit carry calculations that get overwritten later in the block before they're
used. Very common in the case of srawix and friends.
Don't switch to a vertex array object of 0.

This causes glDrawArrays to fail in core profile, and thus on OS X, see:

http://renderingpipeline.com/2012/03/attribute-less-rendering/

There must be something bound, even though it is not used.

Fixes #7599.  I'm not sure this is actually the best way to fix it,
since AFAICT it makes a nonobvious assumption that *something* will be
bound before the first attributeless rendering in
TextureConverter::DecodeToTexture, but it's what degasus suggested and
seems to work.
JIT: implement frsqrte

Mostly a straightforward translation of the interpreter code, with a few
tricksy optimizations and fallbacks for rare paths.
JIT: implement fres

Mostly a straightforward translation of the interpreter code, with a few
tricksy optimizations and fallbacks for rare paths.
GCI Folder: if there are too many files in the folder, try to leave free directory entries.

Rule: Load first 112 files, any remaining files in the folder are ignored unless they are the same gameid as the current game
Added the EmuRunningState check to the GPU thread's FIFO loop so that the GPU thread services any waiting save states.  This is needed for games that have the Sync GPU option enabled.
Render: Implemented simple render target pool

This avoids creating and destroying render targets every frame,
which is a significant CPU overhead.

Old render targets are destroyed after 3 frames.
Auto iterate through configuration inputs

Allows user to map all inputs seamlessly without having to
click on each button.
Also increased button timeout to 5 seconds from 1.5 due to pita.

Motion controls are not included since they will be special cases.