Issue 9818 - Constant folding for static array does not work with initializing by element

http://d.puremagic.com/issues/show_bug.cgi?id=9818

(This pull request is based on #1800)

Refactoring code for initializer semantic.

- Handle implicit constructor call in `ExpInitializer::semantic`
- Add target type parameter in `Initializer::toExpression`.
  For `T[n] sa = e;`, its initializer translation to `[e1, e2, ..., en]` is delayed until it's really needed.