Properly dispose of COM objects
Properly dispose of COM objects

This should fix #60 and help with #59. Since this process is fairly CPU
and memory intensive, it needs to be moved to its own class with a
single instance.

malensek/3RVX,malensek/3RVX,malensek/3RVX