Name the header file "test.h", not "test.h++"

Aargh, this took forever to find!  It turns out that Chisel's
generates test harnesses that use "test.h", which was causing those
files to be built against the Chisel version of the header file (as
opposed to the LLVM version).  This was obviously bad, as the object
layout is completely different.

This should be fixed now...
Silently re-narrow CATD operations

This is a bit of a hack: essentially this is the only tool that
generatese CATD.  This just treats CATD like CAT, which is probably
not really correct...
CATD together outputs for debugging

This lets me check the output of my tool against Chisel's C++
emulator.
Add a simple test

This test just zeros-out a big register.  It's not really a test that
checks if we're doing anything sane, just one that tests to see if the
widths of things are more-or-less generated correctly.