Think of this as rough draft. Taking suggestions to make it robust, error free, and prettier!

For more information:
https://docs.google.com/document/d/1tBEgsJh7QiwNwepXI0eobfK3U8LkJButSyeuFt1degM/edit?usp=sharing

removed: SSE includes

added: 16bit -> float -> 16bit functions
added: linear interpolator and high-quality interpolator functions (including Resampler class)
added: dithering

changed: renamed variables and reformatted a few things to fit with style guide
changed: use s16, u16, s32, u32 etc
changed: store samples and do all computations as floats
changed: volume from 0 - 255
Fixed some styling stuff (whitespace and brackets)

Moved #defines to static const (did I do it right?)
Moved inline fx's to header file
changed math.h to cmath
It seems that all of the other Dolphin-emu files that uses M_PI define it like this. (MatrixMath.h, DPL2Decode.cpp).
Moved stuff around to consolidate.

Updated C bit on TLB cache hits.
Added TLB state to the save state file.

Removed the tag check in InvalidateTLBEntry.  All four TLB entries are always cleared on each invalidate command.
Initialised the TLB cache to start from a consistent state on reset.

Stored a copy of the PTE in the TLB like the real hardware does.
Updated PTE.R bit on Write and Instruction fetch.
Added code to read the PTE from MEM2 if the PTE is stored there.
Refactored the two hash functions to reduce code duplication.
Updated save state version.

Removed the DSP LLE on separate thread option.

The DSP thread will be enabled if the game is an AX ucode game and if the host has more than two cores (not including hyperthreading).

Disabled the DSP thread if netplay or a movie has been started

Take into account the want_determinism option and do not create a DSP thread if determinism is needed.

x64Emitter: fix bitwise AVX opcodes

The reason this didn't break is that bitwise instructions like VPAND,
VANDPS, and VANDPD do the exact same thing. The only difference is the
data type they are intended for.

UnitTests: fix register symbol name in AVX tests

UnitTests: add tests for bitwise AVX instructions

Fix -Wshadow warning.

Remove RunningGamecube

It's not being used and gives a warning on Unix/Unix-like machines.

JIT: fix possible panicalert in loadstore

Didn't bind address register tcorrectly in a very rare case.

TASInputDlg: Remove unnecessary wxWidgets default values.

TASInputDlg: Replace some for loops with range-based for loops.

TASInputDlg: Fix a typo in layout alignment flags

TASInputDlg: Eliminate the usage of some spacers.

Bordering parameters can be specified on addition.

WiimoteReal: add m_ prefix to member variables

WiimoteReal: shuffle code around

WiimoteReal: inline unnecessary function

WiimoteReal: use inheritance instead of #ifdef

HLE code replacement: remove unused code.

JIT: remove unnecessary uses of MMU flag.

Remove note about reusing the render widget.

This is actually not possible due to how Qt manages child widgets...

"Gamelist view style" -> "List style"

 * Cleaner & more concise.
 * Also add some "Alt" shortcuts

GameGrid: enable uniform item sizes.

Looks much nicer this way.

SystemInfo: various cleanup.

 * Rename the copy slot to match naming convention elsewhere
 * Remove the Mac 10.7/10.8 detection as we don't support it now

Micro-optimize RenderWidgetHasFocus().

Implement the "Rating" column.

Looks like I forgot to do this...

Cast the result of GetSize() to "unsigned long long".

Squelches a warning on Mac OS X.

Support HiDPI flags & rating images.

There aren't any yet, it's up to up to Stevoisiak and MaJoR to create
them :)

Fix HiDPI loading logic.

Common: Remove locale based functions from CommonFuncs.

Since %f isn't used anymore in the shader generators, these can go.

SI: Clean up controller-like devices with subclassing

This takes the giant mess of controller-like devices (dance mat and
steering wheel) down to something more manageable, similar to how
the Donkey Konga bongo controller works.

Based-on-a-patch-by: comex <comexk@gmail.com>

ControllerInterface: Remove unused "force" parameter

I'm not sure when this nonsense of forcing locking the mutex when it's
already taken should have ever taken effect, but let's be thankful it
isn't now. That was a badly worded sentence.

DInput: Remove the unsupported Lights output

The LEDs feature doesn't actually do anything: the SetState method is
entirely commented out.

ControllerInterface: Implement dummy UpdateInput / UpdateOutputs

Make the implementation here a bit easier.

ControllerInterface: Remove unused ClearInputState

ControllerInterface: Make UpdateInput / UpdateOutput return void

The return values here have never been checked, so it doesn't make sense
to return a value to begin with.

GCPad: Clean up Motor/Rumble interfaces

Remove the duplication here and just have one Rumble interface that
takes a single strength parameter.

SDL: Apply updates immediately rather than going through UpdateOutput

We're going to remove UpdateOutput as it's redundant, and horribly
complicates the code.

XInput: Apply immediately as well

ForceFeedback: Apply immediately as well

HW: Remove UpdateOutput

All of the rumble interfaces are now immediate mode.

HW: Poll system input from system timers

Rather than playing terrible hacks to determine the start of input
frames, just update system input periodically. Specifically, every
60th of a second.

WiimoteEmu: Remove Spy method

This is the only use for a lot of unused methods and structs, and it's a
poorly written mess that doesn't even compile. Just remove it so we can
clean up the rest of a lot of code.

WiimoteHid: Remove unused structs

Nunchuk: Use the accel_cal struct directly in nu_cal

Nunchuk: Hardcode Nunchuk stick calibration values

The game can never change these, so there's no reason to make it
dynamic. Just put the constants in the code.

While we're at it, take the time to clean up the code and also
and document several of the hacks we're doing inside to make the code
clearer to understand.

Nunchuk: Hardcode Nunchuk accelerometre calibration values as well

WiimoteEmu: Hardcode acceleration calibration values

Now we don't have any runtime calibration at all.

Enables stereo rendering with OpenGL ES 3.1 + AEP.

If the host device supports GLES 3.1 and AEP we can have stereo rendering.
Just need to make sure to grab the correct function pointer that GL_EXT_geometry_shader provides, and enable AEP in the shaders.

We can't just check if AEP is in the extension list for support because Qualcomm has failed once more.
With the Nexus 6 it reports support for AEP but doesn't support OpenGL ES 3.1, which is an impossible combination.
From reports on their forum it seems that attempting to use any AEP things results in nothing happening, seems like a stub implementation.

Adds LLVM version check to cmake.

We require LLVM 3.4 minimum, so if the user has something older make sure to not attempt compiling.
Fixes issues #7858 and #7906.
wow! such order! much include! so unsigned! very hope fix!