Fix Issue 13383 - wrong code with -O with ints, longs and bitwise operations

Converting '(1 << a) & b' to 'b btst a' is only valid when the constant fits in a register.
Clean up some prototypes
Issue 2350 - Contracts with a naked body are indecent

Error on a naked function with contracts instead of generating wrong code
fix Issue 13413 - dmd does not follow symlink when searching for dmd.conf

- first search argv0 in PATH then resolve symbolic links
Merge pull request #3937 from yebblies/issue2350

Issue 2350 - Contracts with a naked body are indecent
Merge pull request #3934 from yebblies/issue13383

Issue 13383 - wrong code with -O with ints, longs and bitwise operations
Merge pull request #3941 from MartinNowak/fix13413

fix Issue 13413 - dmd does not follow symlink when searching for dmd.conf
Merge pull request #3936 from yebblies/cleanup2

[cleanup] Clean up some prototypes and dead code