[CompactUnwind] Fix register encoding logic

Fix a compact unwind encoding logic bug which would try to encode
more callee saved registers than it should, leading to early bail out
in the encoding logic and abusive use of DWARF frame mode unnecessarily.

Also remove no-compact-unwind.ll which was testing the wrong thing
based on this bug and move it to valid 'compact unwind' tests. Added
other few more tests too.
Attempt to fix the cmake build by requiring mcjit on the cmake
dependencies for the KS tutorials
Once more on the cmake build. nativecodegen->native on the dependencies.

Thanks to Rafael Espindola for testing assistance.
InstSimplify: Try to bring back the rest of r223583

This reverts r223624 with a small tweak, hopefully this will make stage3
equivalent.
[Hexagon] Adding add/sub with saturation.  Removing unused def.  Cleaning up shift patterns.
Lazily link GlobalVariables and GlobalAliases.

We were already lazily linking functions, but all GlobalValues can be treated
uniformly for this.

The test updates are to ensure that a given GlobalValue is still linked in.

This fixes pr21494.
Clean up the rst for the debug info tutorial
InstrProf: Use LLVM's -instrprof pass for profiling

The logic for lowering profiling counters has been moved to an LLVM
pass. Emit the intrinsics rather than duplicating the whole pass in
clang.