Expand on IrType::get rationale.
Get rid of empty IrBase class.

It isn't useful in any way now that the GC is out of the
picture, and the existance of a "dummy" toChars() method is
annoying when debugging.
Factored out struct initializer constant generation.
Handle different element initializer types in array literals.
Unify handling of struct initializers.

GitHub: Fixes #351.
Avoid confusing naming convention.

We generally do not really use underscore prefixes. But if
they are used in other codebases, they typically refer to
member variables.
Do not try to guess exact initializer type.

This might have been required with the old (pre-3.0) LLVM
type system, but the module linker handles global type
resolution just fine now.

Also, it is virtually impossible to determine the type in
advance for some cases, e.g. an array of unions with an
initializer that contains pointers to the array itself.
Get rid of now-obsolete DtoConstInitializerType.
VarExp::toElem refactoring and global size assertion.

Frontend errors shouldn't be used for glue layer consistency
checks – maybe the error was actually hit in ancient versions.
Check initializer type size in IrStruct::getDefaultInit().
Merge pull request #360 from klickverbot/union-initializer

Unify struct initializer codegen, fix it for unions