Add custom library header save/restore code.

Should migrate current 1.12 installations from the old QT binary blob
to the new protobuf format.  This won't help us for users upgrading
from 1.11, but all future upgrades should be much smoother.
includes a small roundtrip test.

Seems like an unnecessary copy when the class is only used a temporary variable -- is there a reason this needs to be a class? Why not a static helper method? 

```c++
HeaderViewState saveHeaderStateToProto(const QHeaderView& headerview);
void restoreHeaderStateToProto(const HeaderViewState& headerState, QHeaderView* pHeaderView);
```



You seem to be using it as a temporary variable mostly to call saveState or restoreState -- why not just make it 

I would say this doesn't really need to be a class actually -- it's