Fix init_mapping_table compile time
Support an Op-lowering pass

Backends should implement performance-critical Ops directly, but might prefer
not to implement others directly and instead express them in terms of other
Ops.  Lowering provides a mechanism for this.  As an example, I implemented
PriorityEncoder, OHToUInt, and Log2 directly in the C++ backend, where
a count-leading-zeros/count-trailing-zeros instruction provide good speedup,
but I provide a generic lowering so Verilog and Flo need not implement them.
Improve C++ code generation
Support sparse ROMs

These are useful both for speeding up combinational logic in C++ and for
attaining better synthesis QoR.