12558 - Catch statement without an Exception specification should be disallowed

https://issues.dlang.org/show_bug.cgi?id=12558

Rationale:
The language should not encourage catching non-recoverable Error/Throwable exceptions, which the current syntax allows (and with ease):

```D
import std.stdio;

void main()
{
    try {
        assert(0);
    } catch  // this catches any Throwable!
        writeln("Caught a Throwable");
}
```

At the very least, this feature might have been useful for catching Exception types only. But implicitly catching Throwable's is IMHO way out of line. This is why I believe this syntax should go through a deprecation stage.

Note that this will only break code which compiles with `-de` (make deprecation an error).

Pinging for approval: @andralex @WalterBright

Before it can go green it requires:
https://github.com/D-Programming-Language/druntime/pull/772
https://github.com/D-Programming-Language/phobos/pull/2092