In/Out: Use type aliases (#740)
In/Out: Use type aliases (#740)

When `fx.In` and `fx.Out` were originally implemented on top of `dig.In`
and `dig.Out`, type aliases didn't exist so they were implemented by
embedding the structs.

Now that we're well past Go 1.9 (when type aliases were added), we
should be more than safe to switch over to type aliases.

Note that even though we're changing the definition of the type, this is
not a breaking change because the `dig.In` and `dig.Out` types were not
usable directly before either as they embedded an internal sentinel
type.

That said, this may require a manual change to some generated/
mechanical code. This should be doable with the following [gopatch]
patch.

    @@
    @@
     import "go.uber.org/fx"
    -import "go.uber.org/dig"

     fx.In{
    -  In: dig.In{},
     }

[gopatch]: https://github.com/uber-go/gopatch

Resolves #730
Refs GO-374
uber-go/fx,uber-go/fx