Refactor how Context references are held.

This also adds support for Ion.with(Fragment), and respects fragment lifecycle.