make textinput play nice in scatter and scrollview

I moved the handles and bubble into the `TextInput` to make the handles move and work properly when transformed unexpectedly (i.e. in a `Scatter` or `ScrollView` or with softinput resize mode). Fixes #2388.

The primary disadvantage I can see with this method is that one could run into issues with a `TextInput` inside a `StencilView` - the `Bubble` could end up outside the stenciled area. I guess one approach to fix this would be to search up the tree for a stenciling parent instead of adjusting the `Bubble` position based on the `Window`. But I believe those use cases are far less numerous than the cases which this fixes.

I also added a `canvas` parameter to `Widget.add_widget()`, so that a widget can be added to another widget but draw on the before or after canvas.