Create narrow nodes before checking their count

This stems from some of the nastiness of having non-const members.
Add "emit_catd" option to narrow_op()

This allows me to specify that a particular run of the narrowing pass
should not produce CATD operations.  This is useful for recursively
calling narrow_op(), like I'll eventually do when I end up making MUL
work.
Add a limited form of LSH

This is required for MUL, which is why I've added it.  Note that it's
currently a mess and may not actually work (as MUL doesn't work), but
at least it's something...

There's a test case but it doesn't seem to actually emit the specific
form of LSH that's used by MUL.  As far as I can tell it's impossible
to emit that form of LSH just using Chisel, which is a pain...
Add another wide_node temp creation function