More get_field fixes:

* In the get_subbyte<false, ..., ...> case, the value was not being
  right shifted appropriately.

* The bits calculation in get_field was incorrect for the case where
  the full byte needed to be read for fields that spanned multiple
  bytes.

* get_subbyte<true, ..., ...> did not use ::value.
Added a more thorough test program:

* This test covers the following cases

  + Field that's byte aligned at the start and end and fits in a byte.
  + Field that's byte aligned at the start and end and spans multiple bytes.

  + Field that's not byte aligned at the start, but byte aligned at the end, and fits in a byte.
  + Field that's not byte aligned at the start, but byte aligned at the end, and spans multiple bytes.

  + Field that's byte aligned at the start, but not byte aligned at the end, and fits in a byte.
  + Field that's byte aligned at the start, but not byte aligned at the end, and spans mutliple bytes.

  + Field that's not byte aligned at the start, not byte aligned at the end, and fits in a byte.
  + field that's not byte aligned at the start, not byte aligned at the end, and spans multiple bytes.