Uploadable

Upload class. Building a road to uploading things all over. This PR was motivated by #65.

This change has a migration that needs to update all the users existing files, so it's non reversible and it's kinda scary.