Include decoded params in form on validation failure

Currently when a form fails validation using `variable_decode=True`, `form.data` contains the request params rather than the variable decoded version:
eg. `{ "tags-1": 'apple", "tags-2": "banana" }` instead of `{ "tags" : ['apple', 'banana'] }`

This PR makes the form data consistent with that of a successful validation.

There's also some misc. fixes included.