Upload refactor

Make the upload an open-closed system.  

If I want to implement a different upload strategy, I need only to:

### Set it in config...
```yaml
storage:
  strategy: my_neato_upload
```

### Create an uploader class within ```Kilt::Upload```

```ruby
module Kilt
  module Upload
    module MyNeatoUpload
      def self.upload type, file_reference
        # I'll do the work here
      end
    end
  end
end
```

This includes updates after  #48 , so merge it after that one.
This is the magic... all of the tests and refactors were headed to this point.