read/write files in UTF-8

Use codecs.open instead of just open.
move CSV read/write functions closer to CSV parse functions
remove unused functions
split prep_valid_values function for easier testing
unique exceptions for different repository testing errors
added documentation, doctests, and unit tests
module for interacting with the ID service "API"

ID service does not have a real API; you have to screenscrape :P