Implment UploadSessioner

Implement an interface for anything that can manage an upload session
make the existing uploadSession more self contained.
This puts some code in the right place, and should make this all much
more testable