Currently conversions to interfaces may happen implicitly (e.g.
Attribute -> TypedAttr), failing a runtime assert if the interface
isn't actually implemented. This change marks the Interface(ValueT)
constructor as explicit so that a cast is required.
Where it was straightforward to I adjusted code to not require casts,
otherwise I just made them explicit.
Not sure if this is the best way to do this, I couldn't figure out how to get DRR to do the cast.