Add support for handling file uploads.
Add support for handling file uploads.

- Pushstate form submissions now store `input[type=file].files` FileList references.
- These can be used to access the uploaded file, read it, send it to a server, etc.
- These are stored in the history, and will be available when clicking forward, back, etc.

Some caveats:

- If the browser tab/window is closed and re-opened, the history might still remember there was an upload, but be unable to access it.
- This slightly surprising behaviour:
	- If the `<input type=file />` uploads `cat.jpg`, and they submit a form, the FileList will contain a reference to `cat.jpg` in the history.
	- If, on the next page, they change the file input to point to `dog.jpg`, and then click "back" to the page where we had uploaded `cat.jpg`, you'll find it now loads `dog.jpg` instead.
	- Essentially, the history item remembers a link to whichever files existed on that input.
	- If the file input is changed, the history is changed too.
	- The workaround is to replace the input node after it is used. `inputNode.insertAfterThis( inputNode.clone() ).removeFromDOM()`
		- This will keep the FileList in History from being changed after it is recorded.

jasononeil/hxpushstate,jasononeil/hxpushstate