Interact on_demand option

`interact()` is very useful for data exploration work, but at the moment the function re-runs on every parameter change (and dragging a slider results in multiple updates). For long-running functions this can be awkward.

This adds a new kwarg `on_demand` to `interact()` which suppresses automatic re-running, and adds a button to manually request a re-run of the function. The implementation works (and a simple test is included) but could probably use some improved styling.