Fix custom form fields validation #671

Pulled in changes from @rjmackay.

* Actually return sane error messages
* Push errors directly into $post object
* Bind all error to 'custom_field' rather than trying to bind to
  individual fields as this didn't work and meant no errors were displayed
* Still a bit broken since only the last error will get displayed,
  not great if you have 10 errors and only see 1
* Fix unit test to grab the errors from the $post object