Clean up Extract implementation
Support updating individual bits within Reg(UInt())

For example,

val foo = Reg(UInt(width = 10))
when (bar) { foo(baz) := quux }