added progress block which is called on upload progress
refactored method to add data to a multipart form
this now accepts arrays which are posted as html forms would post them
added method which truly encodes a string in url format
changing tests to be more like true unit tests