Fix calculation of firrtl directions for OpaqueTypes
Similarly to Vecs, both the direction of the OpaqueType itself and the direction of its element can affect the direction of the resulting firrtl port. Since OpaqueTypes can wrap other OpaqueTypes, this direction calculation needs to be recursive. The same basic principle applies to calculating firrtl flip for OpaqueTypes that are elements of other Records.
parent
b501b699