File upload component

File upload functionality added to challenge package
A consistent interface to a file storage provider would just load the file and call the delete method.  We shouldn't need to call different methods depending on the provider type.