Port to the newest libflo

The only change here is to add in the new opcode that libflo now
defines.  Note that they're all unimpliminted for now...
Improve dataflow_order() unimplemented message

This now says that the problem lives inside the dataflow ordering code
so it's easier to find.
Allow ordering for more operations
Print a better abort message on class not found

There's some code that attempts to auto-detect a class's name.  This
code now prints a better error message on failures.
Handle ":" or "::" as a path seperator

It turns out that the C++ backend uses both "_" and "__" as path
seperators.  I have no idea why this happens, but I decided to match
the same behavior in the Flo backend.  This way I can simply "sed
s/:/_/g" to get the C++ name from a Flo name.

Essentially this takes the oddness of the C++ backend and duplicates
that complexity in Chisel as opposed to duplicating it here.
Match the C++ backend's VCD shadow names

The C++ backend calls its VCD temporary names ${SIGNAL}__prev instead
of _vcdshadow_$SIGNAL.  This can cause naming conflicts, but I'm just
duplicating it exactly to maintain perfect C++ compatibility.
Port to the latest libflo

This added a single extra argument into libflo::node() in order to
deal with a special case of the CAT code.
Match the C++ emulator's function definitions

There are two changes: size_t -> int and bool -> dat_t.  The bool
change doesn't matter, but the size_t one worries me a bit.  I guess
we aren't running a billion cycles, so it doesn't matter?
Put a space between type and name in calls

This actually doesn't matter, it just makes the code a touch easier to
read.
Add XOR, CAT, and RSH operations
Make code-gen'd commens more noticable
Fix a width bug in writeback

I was using the wrong sort of width.
Use alt_width to copy nodes

Despite being avdised against by myself, this is the correct thing to
do here.