[Refactoring] Move StructLiteralExp::fill into StructDeclaration

Perhaps this is the most better design so it would be final move.
Calculate `StructDeclaration::hasUnions` immediately after the struct size is determined.
Improve @safe check semantics for overlapped fields.

1. Fix `VarDeclaration::semantic`:
  Declaring struct/union variable that has overlapped field should be allowed even in @safe function.
  --> Using std.format.FormatSpec will be allowed in @safe code.

2. Add `bool VarDeclaration::overlapped` and fix `DotVarExp::semantic`:
  a. If an overlapped field variable type has no pointers, reading it should be allowd even in @safe code.
     Because it won't cause memory corruption, as same as the void initializing for integer variables.
  b. If an overlapped field variable type has any pointers, reading it should be disallowed in @safe code.
     Because it may read invalid memory address.
+
Partially fix 1432
Interpret overlapped field
-