avoid blocking on partials creation

On Java 8, the method ConcurrentHashMap.putIfAbsent uses a lock on the Node instance that is the representation of the map key, even if the element is already existent. This PR uses the contains method that doesn't perform blocking operations.

cc/ @juliusv @matttproud @grandbora @herval
@grobie ```pufIfAbsentPut``` returns the old value if it was already existent and the next lines return the value if not null, so the behavior is similar to the new code. @matttproud do we need full consistency here?