Enforce all pattern OUT widths always known

I've been trying to work around this for a bit and it seems like it's
just too annoying.  Essentially what I've done here is just gone ahead
and asserted that all pattern output widths are known (in addition to
their input widths).

This makes hooking up patterns a whole bunch easier.
Add some logical right-shift tests

These tests are pretty straight-forward in that they don't really test
any corner cases.  Currently the behavior of Chisel's right shifts are
somewhat undefined, so I want to avoid testing these corner cases
until I can sit down and actually define them.