Adds NPCLibOptions as an optional parameter to NPCLib's constructor. The
movement handling specified by the NPCLibOptions will determine whether
to use the PlayerMoveEvent or a task.
Replace cached thread pool (Executors.newCachedThreadPool()) with single thread pool (Executors.newSingleThreadExecutor()). The single thread executor is more efficient for lazy asynchronous operations.
Makes NPCBase compliant with net.jitse.npclib.api.NPC.
Implements NPC#getText() to return List<String> and NPC#getSlot(NPCSlot slot) to return ItemStack.