fix Issue 12979 - Nothrow violation error is hidden by inline assembler

- deprecate using unattributed asm in attributed functions

- add explicit attributes on asm statments (unverified by compiler)

  asm pure nothrow @nogc @trusted {
    //...
  }

- added new CompoundAsmStatement because the parser
  already splits asm blocks into many AsmStatements

`asm statement`, not `asm block`, as we should consistently refer to things with the same phrase. I also don't like the double negative, and would prefer something along the lines of:
```
asm statement is assumed to throw - mark it with 'nothrow' attribute if it does not
```