Add support for D programming language demangler

Dear LLVM Development Team,

I'm writing to the mailing list to discuss the introduction of a new
proposed demangler for D programming language. This introduction is
quite big and majorly ported from GCC libiberty codebase. To give some
context, the implementation was written by Iain Buclaw, the maintainer
of GDC (GCC-based D compiler) and I'm in contact with him and Mathias,
who is guiding me as a mentor on the SAOC (Symmetry Autumn of Code).

As requested by James Henderson, I'm CC'ing Tanya Lattner for extra
guidance for the right direction to push this forward.

The first patch is ⚙ D110576 [Demangle] Add support for D programming language, which was split
into several small patches:
⚙ D111414 [Demangle] Add minimal support for D programming language
⚙ D111415 [Demangle] Add support for D simple single qualified names
⚙ D111416 [Demangle] Add minimal support for D simple basic types
⚙ D111417 [Demangle] Add support for D symbols back referencing
⚙ D111419 [Demangle] Add support for D types back referencing
⚙ D111420 [Demangle] Add support for D type functions
⚙ D111421 [Demangle] Add support for D functions
⚙ D111422 [Demangle] Add support for D native tuple types
⚙ D111423 [Demangle] Add support for D delegate types
⚙ D111424 [Demangle] Add support for D template instances
⚙ D111425 [Demangle] Add support for D integer literal values
⚙ D111426 [Demangle] Add support for D floating-point literal values
⚙ D111428 [Demangle] Add support for D string literals
⚙ D111429 [Demangle] Add support for D Array and associative array literals
⚙ D111430 [Demangle] Add support for D struct literals
⚙ D111431 [Demangle] Add support for D function literals and null literal value
⚙ D111432 [Tools] Add a fuzzing tool to help fuzzing D demangler

Please read the first patch for more context and suggested procedures
proposed by James Henderson and David Blaikie.