3.0 Add textarea and file input widgets

As part of #2267, this implements the textarea and file upload widgets. Both of these are very simple widgets and are separate so we can make it easier for people to replace them.

Only a few more widgets left :smile: