Module file names end in .so
The API versions list isn't iterated over, so it's more useful as a set
Make more consistent some of the exception description wording
Make more consistent some of the exception description variable naming
Fix ModuleLoadFailed to take the parameters that are always passed to it