Move some private methods to public

because sometimes your content is remotely fetched and you refresh your
layout when the fetch is done, then it's necessary to update the
content size of the scroll views
Reprivatize methods and add key-value observing to update frames
Fix an infinite loop while updating frames
Improve the infinte loop fix
[GI#6] Call super for KVO calls we ignore.

- Extract several parts of code into methods.
- Use contexts to identify KVO notifications, not string comparison.
- Call super for KVO notifications outside of background and foreground
  frame notifications.

This fixes issue #6.