Refactored, added errors/asserts

I had a pretty frustrating time trying to merge the testing functionality (that was in the wrapper) into the existing cross validation code for scoring feature vectors, and eventually decided that it should be a different module.

I updated the multiprocessing module to be a little more helpful/flexible by allowing 'tags' for organizing results and keyword arguments.

I reduced the scope of the wrapper module by a fair bit by moving out the testing code and the problem data building function.

The main work was on raising errors/asserts. I think I was pretty thorough with the modules that I covered (so far just the wrapper and group_problem_data), but I haven't done much with it in the past, so let me know what you think if you happen to read through it.