Added JS versions of some of the test modules
Moved some module related utility functions to their own class in common
Moved `ModuleInfoCallback` to its own file to make it re-usable and made its interface much saner.
Added a version of `readModuleInfo()` to `BytecodeUtils` that doesn't use a callback but just returns `ModuleVersionDetails` (also saner).
Made de `AbstractRepository` user the saner version of `readModuleInfo()`.
Added a `JSUtils` which is the JS counterpart to `BytecodeUtils`
Removed `ModuleInfoCallback` because we don't use it anymore
Added the JSUtils to the resolver configuration
Now filling in the version for the ModuleVersionDetails from the name of the file
Extracted common methods between `BytecodeUtils` and `JSUtils` into the new interface `ModuleInfoReader`
Instead of `ModuleVersionDetails` duplicating all the info from versions it now just extracts them from a version
`ModuleVersionDetails` is now `Comparable` and implements `equals()` and `hashCode()`
Filtering out the implicit language module dependency for the dependencies returned by the `JSUtils`
Sanitizing API by using `MethodVersionDetails` wherever we can without using callbacks
Fixing a JS test that now returns results