Allows interfaces to specify a default implementation.
Note that the default can be overridden after the fact
by explicitly binding a different implementation to the
interface.
For "normal" injections of a given library, this reduces
the amount of boilerplate configuration code needed,
and also shrinks the Tang configuration objects that
need to be passed around.