Make the controller observable and notify "user" observers

Listing 15.28, 29, 30, 31
Elevate shared test setup (Listing 15.32)
Resetting the view's class (Listing 15.33, 34)