add a lock in _update_location_cache

This makes sure ```self._location_cache``` is not checked while it is updated (i.e. while it is not ```None```, but also not completely populated).

Before, multithreaded calls to ```get_manifest``` would throw exceptions (see https://github.com/RobotWebTools/rosbridge_suite/pull/139 ): 
While Thread 1 is still traversing the paths (line 176), Thread 2 enters ```_update_location_cache```, sees that ```_location_cache``` is not ```None``` and returns, but ```_location cache``` doesn't contain data from all paths yet, so a ```ResourceNotFound``` exception is raised, even though Thread 1 will in fact add the "missing" data eventually.
Oh, so *that's* how global works. Interesting.

Thanks for taking the time to explain!