Formalize how dependencies are handled.

Dependencies now have their own database table with rows and everything.
Additionally there's a whole bunch more support for dependencies throughout the
codebase, and even a trait which will hopefully expand in the future to give
more methods by default to models.

The upload format has also changed to stop shoving things in headers and rather
use a JSON body upload to have some more aribtrary data.
Test uploading crates with dependencies