Add the ability to dismiss the keyboard by tapping outside of the text area
This adds a widget, DismissKeyboard, that dismisses the keyboard when the focus is no longer in a text field, and wraps the KeyboardAdaptor widget in that widget. The net result is that, if you tap in the area around the message input (but not in the text field), the keyboard will go away. This provides a way to dismiss the keyboard on iOS, which doesn't have a button to dismiss the keyboard normally by default.
It would also be possible to wrap the entire application in the widget, which would mean tapping anywhere outside of the input area would close the keyboard, but I decided to start small here, and I didn't want to mess around with main.dart quite yet.
It should have no effect on any device with a hardware keyboard.
I think this is a good idea, however I'm not sure wrapping the entire area with this widget is the right approach, as it means tapping in any small gaps (such as between the attachment add button and the text area) would dismiss the keyboard, which is probably not the users intent.
Maybe it would make more sense for a short tap on any message/timeline event would dismiss the keyboard? as that action isn't currently used for anything.
While we are looking at ways to dismiss keyboard, I think we should also dismiss the keyboard when swiping to reveal either the room list / user list panels, as the text input is mostly off screen and doesn't make sense to be focused, but this can be added in a seperate PR later if you dont want to work on that.