Lacking type checks for void expressions

Imported from http://bugzilla.roxen.com/bugzilla/show_bug.cgi?id=3085

Reported by Martin Stjernholm mast@roxen.com

The following program does not trigger an error or a warning, not even with -w -rT:

    void f() {}
    int main()
    {
      return f() + 1;
    }

I think it's just as much a type error in the use of f() as in e.g. this case:

    mapping f() {return ([]);}
    int main()
    {
      return f() + 1;
    }

(See also [bug #2677 (closed)].)