disable Move and Rotate operations if area < 80% contained in the viewport
see #542.
Also included:
1. DRY up code for "% contained in" extent testing.
2. If action.disabled() returns a better reason, show that instead of the too_large one.