Push SMaSH towards easier programmatic use

SMaSH has good potential, but the combination of various scripts of different languages as well as the inflexible interface make it difficult to include in any other pieces of code. Personally, I want to be able to run SMaSH again and again on many datasets - In its current condition, this would be accomplished through a bunch of hacks. I think it would be good for the adoption of the tool to be easy to use.

Towards this end, I've put the "main script" section into a main function, while making a VariantComparator class, replacing optparse (deprecated) with argparse, worked towards following Python coding standards, restructured the source code in preparation for pip-installability, re-wrote the sortByRef perl script in Python, and attempted to do some minor cleanup. I think this is only one step in the right direction, but my fork definitely includes some good improvements already (more are coming).