Merge pull request #1262 from denis-sh/use-`FieldTypeTuple!S`-instead-of-`typeof(S.tupleof)`

Use `FieldTypeTuple!S` instead of `typeof(S.tupleof)`.
Add lvalue/rvalue traits

* add `isLvalue`
* add `rvalueOf`/`lvalueOf`
Use `std.traits.{rvalueOf,lvalueOf}` in `std.traits.hasElaborateAssign`.