Avoid invalid *&ex -> ex optimizations.

This is a back-port of D-Programming-Language/dmd#3662
(commit 4da4da1), and fixes compilation of:
---
struct Foo { char[1] bar; }
bool checkBar(Foo* foo) { return true && *foo.bar.ptr; }
---
Merge pull request #649 from klickverbot/backport-dmd-3662

Avoid invalid *&ex -> ex optimizations.
Add changes from D-Programming-Language/dmd#3685
Latest druntime changes
Merge pull request #650 from Trass3r/dmdpr3685

Add changes from D-Programming-Language/dmd#3685
Implement longdouble as a wrapper around llvm::APFloat.

This commit introduces a new class ldc::longdouble which provides real_t
semantics based on the target. It uses llvm::APFloat as base implementation.

This fixes issue #259.