Overhaul and add tests to keymap code

Overhaul the keymap code and add a bunch of tests.
The main new feature is the introduction of the KeyAlias type,
which allows for lazy redirection as opposed to the eager
redirection originally implemented. At some point down the road
the redirection scheme changed to a hybrid scheme where the
redirection would look in all the layers passed to `keymap`
at the same time (rather than just the layer it is specified at
and any layers below it). Unfortunately this is also quite
incompatible with adding new keymaps dynamically on top of the
existing layer. Since this behavior is useful for taking care of
canonicalization of escape sequences, the KeyAlias type is added
to support this use case. A key sequence mapped to a KeyAlias("ZZZ")
will behave as if ZZZ had been typed instead.
Backspace is overriden in the mode keymap, so needs a KeyAlias
let typetree.jl print types out
julia-mode.el: `f(x) == something` does not define a function
Add wrapper for passing constants through type inference
More informative error messages for `test_throws`
Fix conflict post process code
Merge pull request #9455 from kshramt/informative_test_throws

More informative error messages for `test_throws`
move D_PNAN/D_PINF/etc constants into static defines
Windows fixes for build_sysimg.jl from #9376

Windows fixes for sys.ji location and using .ji in messages instead of Sys.dlext

Fix WinRPM binutils location

change some messages from println() to info()

(cherry picked from commit cc9b2987202324b69d6430106db11b120ad9737e)

Refactor running the linker into a separate function

modify docs to reflect different paths on Windows

(cherry picked from commit a829806499360fffc64a21772114d44e76d8bff8)

Conflicts:
	doc/devdocs/sysimg.rst

use winrpm gcc instead of binutils to link sys.dll on windows

use Base.samefile for file path comparison

add instructions to Pkg.add("WinRPM") too

use -shared also on Windows, along with '-Wl,' only on Windows

(cherry picked from commit b7a5d801a8657ce0f458b3372b3ace96b5fa517d)

add .ji extension so inputs to samefile both exist
(cherry picked from commit 1506d309591838a8e3c04275696b273e73fa3e32)
fix #7739. for addprocs, this makes dir always specify the starting working directory (defaults to pwd()) and makes exename always specify the julia binary to run (defaults to $JULIA_HOME/julia)
Make keymap optional with k as default
need a second $ for git status in release-candidate
(cherry picked from commit a0d3d9376bfd80070a95bfccbbd0f4144293b9bf)

rst fixes

(cherry picked from commit bb020fa602e4bb4db6ff15ab991c523dbad7fd85)
Merge pull request #9397 from JuliaLang/kf/keymap

Overhaul and add tests to keymap code
added docs for contains function
Explain error in `contains` doc
Correcting a typo.

Should be `'o'` instead of `'0'`.
Merge pull request #9460 from Ismael-VC/patch-1

Correcting a typo.
win64: use a GlobalVariable in the .text section for debuginfo, rather than hacking the MCJIT MemoryManager
fix issues with last commit on legacy platforms