Allow for URL escaping of [ and ].
Add a mechanism for non-button +commands to trigger key-up handling.

When executed, a +command must call a function, either trap_PrepareKeyUp()
for cgame code or IN_PrepareKeyUp() for client code.

Conflicts:
	src/engine/client/client.h
Deprecate ‘unsafe’ in /set commands in favour of an early ‘-unsafe’ switch.

“set… <var> <value> [unsafe]” is deprecated but still recognised (for now).
“set… [-unsafe] <var> <value>” is used instead: it avoids messy parsing of
the end of the command string.
Initial support for alternative shaders based on entity state.

This adds an extra shader keyword, ‘when’, which appears at the same level
as diffuseMap etc. It takes two parameters: a word describing what condition
(purely a convenience for the reader) and the name of another shader.
Currently, there are two condition names: ‘unpowered’ and ‘destroyed’.

Which alternative shader is used is set when calling R_AddRefEntityToScene:
the code (usually cgame) sets the altShaderIndex member of the parameter to
a value in enum altShader_t.

This is implemented and working for (some) MD5 building models, and
implemented but untested for MD5 player models.
Bump VM ABI version.
Merge branch 'master' into for-0.18

Conflicts:
	src/engine/client/cl_input.c
	src/engine/client/client.h
Rework MD5 buildable animation loading.

This loads a few extra animations.

"idle3" → "powerdown"
BANIM_IDLE3 → BANIM_POWERDOWN
  This is used for human buildables when power is lost.
  It is no longer looped.

"destroy2" → "destroy_unpowered"
BANIM_DESTROY2 → BANIM_DESTROY_UNPOWERED
  This is used when an unpowered buildable (human or alien) is destroyed.
Actually use the ‘destroy_unpowered’ animation for MD5 buildables.

The fallback is the normal ‘destroy’ animation: there will therefore be no
change for any given buildable type unless the new animation is defined for
it.
Launcher script: only prepend ‘+’ if missing.
Split out individual upgrade selling.
Move the sell code before the buy code.
“sell armour” to sell light armour, helmet, battlesuit.

Also recognise “armor”.
/buy: +item → auto-sell conflicting items; ?item → quiet if can't buy.
Turns out that cb1b64d5 and 173850d4 cause *.qvm to contain no code. Fix this.
Remove unneeded attribute components from glsl shaders

This allows the glsl compiler to optimize away some instructions and reduces memory use for static vbos
Don't bind a cubemap if reflective specular is not enabled
Use the return value of clamp()
Fix MD3 animations (broken in 6dd3d81e/b202fa0d).
Uncommented USE_REFLIGHT in tr_types.h
Merge pull request #250 from Forty-Bot/for-0.18

Uncommented USE_REFLIGHT in tr_types.h