Form support updates

I'm putting this up as a PR as a bit of a gate for code review, as I've been sitting on this for a while and it makes some fairly chunky changes

Contains:

* Slight reformat of documentation to make functions stand out
* Slight refactor of existing form interaction tests
* Support for `(choose)` which selects options from standard select boxes
* Support for `(check)` and `(uncheck)` which work on checkboxes