fix Issue 4999 - Add Kenji Hara's adaptTo() to Phobos

Add structuralCast and structuralDownCast in std.typecons