Upgraded dependencies

Upgraded dependencies, both for product and tests. Made sure to add explicit version requirements for some transitive dependencies to avoid having multiple versions being used in the project.