Divide template and enclosed struct

The utility templates and functions are not necessary in Tuple struct.
Remove workaround for the compiler bug 4424
Remove unnecessary `length` member

It's automatically forwarded to expand.length through `alias this`.
Use `T.init`
Small fix for isCompatibleTuples
Rename `app` to `w`

`w` (==`writer`) is better than `app`(==`appender`).
Use built-in tuple operations
Named-field tuple should be a subtype of unnamed-field tuple.

Remove workaround for issue 10179
Use built-in tuple assignment and equality operations
keep tupleof type compatibility