Add an error when narrow_map()ing unknown-width nodes

I can't build a set of narrow nodes unless I know the width of these
nodes to begin with!
Change LSH to use bfext, just like RSH does

This provides two advantages: it's cleaner, and LSH actually works now :)
Rewrite CAT as a LSH, RSH, OR instead

This is the standard way to do CAT on all other machines, so I figure
it's probably best to do it on DREAMER as well.  It helps that the old
CAT code was broken and that this works for more cases.  I guess the
real reason I did this is just that I didn't want to deal with fixing
the old CAT code... :).

Note that I still pass through CAT opcodes for short CAT operations,
as there's no reason not to.