Remove package function `defaultInit`

It was a hack for the compiler bugs around T.init. Now the they are properly fixed, so the unused helper function is actually unnecessary.
Fix predicate template implementations in std.traits and std.range

Use T.init property instead of void initializer, because it will work even if T is const or immutable type.

I must change a part of unit test for the bug 6935, because we cannot support ranges which overrides init property.
Add a test case isAssignable!(void[1], void[1])