InputCommon: Split Device stuff out

The ExpressionParser needs this to be out of here to prevent issues
with cyclic references.
InputCommon: Add a new ExpressionParser to replace the old hack language

This contains a new, hand-written expression parser to replace the old
hack language based on string munging. The new approach is a simple
AST-based evaluation approach, instead of the "list of operations"
infix-based hack that there was before.

The new language for configuration has support for parentheses, and
counts "!" as a unary operator instead of the binary "NOT OR" operator
it was before. A simple example:

  (X & Y) | !B

Explicit device references, and complex device names ("Right Y+") are
handled with backticks and colons:

  (`SDL/0/6 axis joystick:Right X+` & `DInput/0/Keyboard Mouse:A`)

The basic editor UI that inserts tokens has not been updated to reflect
the new language.
ExpressionParser: Add support for the add operator

Use "+" instead of "^" this time.
ExpressionParser: Support bare words for simple control names

Using backticks for all control names can get a bit grating,
so support "A & B" instead of requiring "`A` & `B`".
InputConfigDiag: Update for the new expression language

Modify the buttons and editor interface for the new expression
language, like the new op name for add, the new device name syntax,
and add new editing features, like simple selection behavior on
unary ops.
InputConfigDiag: Give the input text field a monospace font
InputConfigDiag: Use "..." for complicated expressions

The full expression is quite often too big for a simple button
label, so encourage people to use the full editor to edit it.
ExpressionParser: Fix delimiter scanning

We need to make sure we eat the delimiter, otherwise we'll notice
the colon / backtick and think it's either a new control or part
of the control name
Core: Update default bound controls for new ExpressionParser
Merge branch 'expression-parser-fixes'
Core: Fix a typo in the binding of IR Up

Whoops.
Saving real Wiimote state

because that's simpler than reconnecting
Removing Wii input use of an unsaved state value

because that allow the complete state to be loaded
Removing muted Wiimote audio

because that reduce writes
Merge branch 'JP-wiimote-savestate-fixes'
Allow dragging the analog sticks with the tas input.
Fix last commit, and set the position on mouse down instead of mouse up.
provide GL_ARB_ES2_compatibility workaround

ES2 is in ogl core since 4.1, but not all drivers support it
InputConfigDiag: Fix complex bindings with with left-click Detect

This fixes the binding of XBox 360 controllers and similar devices
with complex control names.
[Android] Open the navigation drawer by clicking on the button. Woops, didn't realize that gmail did this as well.