Add support for new parameter attribute `returned`.

Starting with LLVM 3.3 a new parameter attribute `returned` is supported.
The attribute states that the parameter is the return value, too. This is the
case in constructors. (Destructors and postblits do not return `this`.)
Attribute `returned` is now added to the `this` parameter of constructors.
Fix LLVM 3.3 build error.

llvm/Linker.h was changed. This commit reflects the new logic.
Rewrite the llvm::Linker fix for LLVM 3.3.

The previous commit changed the behaviour a bit. This solution should have an identical result.
Replace hard-coded path with registry lookup on Windows.

A hard-coded path does not play nicely with a generic installer.
The installation path is now looked up in the registry with the
key SOFTWARE\\ldc-developers\\LDC\\<version>\\Path.
It is the responsibility of the installer to set this value.
Intrinsics from LLVM 3.3 are also available in LLVM 3.4.
Factored out target creation logic to separate functions.

Care was taken to avoid dependencies on the host of
command line globals.

std::string should probably replaced by llvm::StringRef
in some places.
Do not optimize for host CPU by default.

GitHub: Fixes #323.