protocol_helper.hpp: Use static_cast to convert 1 to the proper type

* Integer literals are ints by default so msb_mask<64,...> fails.
protocol_helper.hpp:  Fix field_mask_bits bug

* field_mask_bits was not properly taking into account the field
  offset when determining how many bits to select.
examples/test.cpp:  A more thorough test

* This now tests all combinations of field sizes 0 to 16, field
  offsets 0 to 7, and bits 0 to 16.
protocol_helper.hpp:  Fix left shift overflow in field_value<true,64,64,unit64_t>::get

* The value left shifted needs to be cast to the underlying type.
examples/test.cpp:  Add uint64_t tests

* uint64_t was not added to the types tested because it causes
  compiles to take too long.  Testing like this is sufficient to check
  for 64bit type incompatibilities.