BUG: convert in-memory fileupload to StringIO

IF uploaded file > 2MB (default limit), it is stored in memory. Otherwise as file in temp directory.

When using InMemoryUploadFile object, the buffer is converted to StringIO to make it compatible with `zipfile` module. TypeError is raised otherwise [observed on *inx system with Apache, WSGI]

Note:

1. Upload file when stored as file in temp directory, is not "closed" if validated. It is to be done when the file is stored.

2. Uncompressed ZIP file size is validated first - Though, uncompressed zip size is done later again.
BUG: release upload file memory after using

After storing the file (successful or unsuccessful), close the upload file object.
Merge pull request #178 from ksurya/upload-fix

BUG: convert InMemory file object type to StringIO