ndbdfdfgn
shurly #14 going back to old bug to clear up the code from the experiment commit
shurly #14 fix need to create shortening too early

This involved expanding upon the notion of a URI store.
Conceptually a URI store is a mapping from long to short URIs.
Rather than bundling everything into a putIfAbsent call REQUIRING construction of a short URI, we now first ask if the longURI is in the map, and if it is, then use the answer, otherwise do a putIfAbsent to cover another thread shrining the same URI in the meantime.

This trickled down the Basic and InMemory abstract URI store classes and was straightforward to implement, at the cost of a long to short map in the in-memory implementation.