Rewrite the File module and all Specs

- Improve interface
- Support more actions
- Break out Search
- Add a more targeted Spec
Refactor and add coverage on Upload module
Update test dependencies
updateFile takes FileData directly
New Search module
Documentation
Always pass setModifiedDate true

It's a no-op if they don't actually try to change it.
Version bump, update cabal description