Treat <form action=""> as a submission to the same page
Correctly read the selected option of <select> inputs

Also refactored the form-reading code to multimethods to allow easier
modification of how to read a form
Add support for reading most common form inputs

* Added new unit tests to cover various input states
* Now using ordered map to guarantee parameter order
* Also supporting passing multiple parameter values
  using the same format as ring's param middleware