refactor, and fix some casing.
add serialVersion to NoModuleException
add some more docs, rename class to match original implementation. move RandomVector to it's own class as it's under a different license.  Add some docs from original.