refactor: changing message container to use accessors

This change is intended to allow a greater freedom to the
implementation. Now it's possible to make use of fancy implementation
techniques like empty-base optimization or even use the same memory
region for all members.

This is important if the standard implementation doesn't meet the user's
performance requirements.
add http date conversion utilities