Fix width inference bug for UInt(1) << io.x

Bits.maxNum's implementation was dubious, and Node.maxNum seemed
to do the trick.  (That said, Node.maxNum should probably throw
an exception, and Bits.maxNum should be give Node.maxNum's old
implementation.  It doesn't make sense for Node to be an unsigned
integer by default.)
Make ROMs synthesizable; remove O(n^2) code

"initial" => "always @(*)"
String => StringBuilder
Fix Mux(cond, SInt, UInt)

But the Mux implementation is still super ghetto...
Clean up isLit/litOf tomfoolery