Switches to cleaner test discovery

This change allows run_tests.py to be run successfully from any directory without issue (because 'tests' doesn't have to be on the path). It does, however, require unittest2 on py26 as the discover() method wasn't introduced until py27.
Merge branch 'test_discovery' into dev