Lower to ground types

simple declarations:
  wire w : UInt[3]
  ==>
  wire temp1 : UInt
  wire temp2 : UInt
  wire temp3 : UInt

  reg r : UInt[3] ;TODO

bundle declarations:
  wire w : {male data:SInt, female ready:UInt}
  wire temp1 : SInt
  wire temp2 : UInt

other
  wire w : {male data : SInt[3], female ready : UInt}
  wire temp1 : SInt
  wire temp2 : SInt
  wire temp3 : SInt
  wire temp4 : UInt

ports:
  input a : {m: data, m:valid, f:rdy}
  ==>
  input a1
  input a2
  output a3

mem m : {m, 

key function: expand-exp(e:Expression) -> List<[Expression,Gender]>
