Actually make that conversion work

I forgot to initialize a value...
Add builtin::width()

This returns the bit width of a builtin type.
Fix value name generation bug

I guess I was never generating more than a single named value because
the unique-value generation code just always returned 1.  It's now
fixed.
Use operation classes for REG implementation

This is probably the most difficult operation, so I figured I'd go
ahead and do it pretty early to make sure that the new system wasn't
completely unmanagable.  I guess it turns out that this new system
kind of works alright (though it's pretty verbose...) seeing as how it
works for REG.