Fix a potential NullPointerException when rotating the device twice

When MessageListFragment is on the back stack and the device is rotated
the instance state will be restored but no new view will be created. If
the device is rotated again onSaveInstanceState() is called and we have
to take care not to assume that the views have been created.
Simplify Handler code to restore message list state
Fix restoring instance state of fragment on back stack
Avoid saved state being discarded when message list is modified