Cache object to string translations in JsonList

With 1.7 the ban, white, and op lists all use JsonList. While this is nice, when checking if an object is in a JsonList the object is converted to a string. Since most of these objects contain UUIDs and UUID.toString() is a generally expensive call, we need to cache the string representation of the object.
Without this change, player.isOp() and player.hasPermission() are far more expensive than they were in 1.6.