[C] Removing broken chunk caching from net.minecraft.server.World, add caching to LongObjectHashMap. Fixes BUKKIT-5425

**The Issue:**

Chunk caching in the World class is broken because it does not know about outdated cache values. This caused various problems when accessing previously unloaded chunks. BUKKIT-5425 is just one example of a bug caused by this problem, another one is the "stripes of air" appearing when using long range world modification tools (for example WorldEdit). There are probably many more problems caused by this bug.

**Justification for this PR:**

This PR addresses the issue by moving the caching to a place where it is easy to avoid outdated cache values. It is not possbile to do correct caching in the net.minecraft.server.World class when following the minimal diff policy.

Removing the synchronization in the World's getChunkAt is removed, because this method may only be called by the main thread and thus is was not necessary. 

For not decreasing the performance the caching is not only removed from the World class, but also added to the LongObjectHashMap class, a place where the caching and avoiding of outdated values is simple to achieve.

**PR Breakdown:**

The caching in net.minecraft.server.World is simply removed and changed to the original NMS code.
Caching in the LongObjectHashMap is done by saving the last accessed key and its value. The cached value is used when using the get method has a cache hit and it is updated every time the get method has a cache miss and when the put, remove or clear methods have a cache hit.

**Testing Results and Materials:**

I tested the modified version with my own plugin that uncovered the bug (sorry not open souce), the bug does not appear anymore. I also tested it with WorldEdit by selecting a large plane outside of the loaded chunks and set this plane to stone. No more "air stripes" appeared.

**JIRA Ticket:**

BUKKIT-5425 - https://bukkit.atlassian.net/browse/BUKKIT-5425