Fix/API: The JsonPlugin ignored HTTPError or HTTPResponse responses.
Replaced cgi.FieldStorage instances in request.files with a custom FileUpload
file wrapper.

FileUpload implements a safe FileUpload.save() method and has a more secure
.filename attribute (no path segments or unsafe characters).

Added tests and API documentation.