OS X build fix.

Thanks to Timothee Cour for reporting the issue.
Fixed vector global initialization for > 1 byte elements.
Merge pull request #333 from ldc-developers/vector-init-fix

Fixed vector global initialization for > 1 byte elements.
Avoid unnecessary memset when allocating array literals.

This completes the merge of pull request #294. Thanks a lot to
Chris Holdsworth who originally wrote the patch!

GitHub: Fixes #294.
GitHub: Fixes #141.
Merge pull request #335 from klickverbot/avoid-unnecessary-memset

Avoid unnecessary memset when allocating array literals.
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.
Backported fix for broken test case.
LLVM 3.3+: Initialize TargetTransformInfo.
Do not optimize for host CPU by default.

GitHub: Fixes #323.
Merge pull request #341 from klickverbot/default-target-cpu

Use generic target CPU by default
Fix uninitialized vars in EnumDeclaration

'protection' and 'parent' are used in ScopeDSymbol::search
detected by Valgrind). The assignment in semantic0 is enough to
fix the bug, but I also added an initialization to the constructor.

This is a backport of DMD commit 4dfaf02d4d by Don Clugston.
Fix function attribute handling on LLVM 3.3+.

The issue was that when merging in the old attributes, attrs
wasn't assigned to, thus silently dropping all of them
(leading e.g. to noinline being omitted on functions containing
inline asm).

The new code hopefully also makes the intent clearer.
callWithStackShell for ARM.
Do not memcpy with same source and destination.

This can happen for sret_args. Drop the assignment in this case.
Fix uninitialized var in TemplateDeclaration.

This is a partial backport of https://github.com/D-Programming-Language/dmd/commit/214b0fdb26837a7ec0d79070c30d1a116cd571d1.