Many, many changes

1) process filenames inside of deferToThread
2) instead of providing a filepath, have the application assign a random
    UUID to each transfer. This uuid is used as a key for many activities
3) simplify and clean up some of the tests

Problems/needing more testing and work:
1) peer discovery - this should likely stop using json and switch to struct
2) unicode file names