(PUP-2901/PE-4524) Add module dependency validation

Prior to this commit there wasn't much verification for module dependencies.
This commit adds verification the module dependencies have sane names and version
ranges. If verification fails, it will raise an argument exception.
The conflicting versions clarifies that the problem isn't just that there are dependencies specified multiple times (that's fine as long as their specified versions are the same).