roslocate info fix (supercedes #67)

for review. Since rosco and roslocate issues have been reported a while ago now, maybe make this a priority?

What i did here was to create unit and integration tests for roslocate info.
Then I applied some of the refactoring that @tfoote did in #67. Since I found some of it introduces incompatibilities with the index of diamondback and fuerte, i reverted some of the things @tfoote did in #67. I made sure that every commit that changes code also has changes to the test suite that breaks without the change to the code.

Moving forward, if locate.py is to be refactored, this can only pass if the unit and integration tests do not break, or if thoses tests applying to diamondback/electric are being removed.