uses djangos import_by_path method

@joshmarlow @wesokes, we were using our own custom import_string method, however, django provides an import_by_path method (that will be changed to import_string in 1.7).

I changed the code to use this method and then a large amount of tests failed. It was difficult for me to update the tests because some of the unit tests were testing multiple cases in one case.

I went ahead and refactored the unit tests into smaller single-case tests. The unit tests still do the same functionality, and patches are used as decorators now.