add final modifier to internal classes
add final modifier to static classes

add final modifier to classes that should not be extended
use AbstractCommand.isHelpVisible method

use AbstractCommand.isHelpVisible method instead of direct permissions check to ensure that commands that do not wish to be visible are not shown in Tab Complete.
use primitive boolean array instead of wrapper Boolean

minor comment cleanup
change use of abstract Region class to IRegionSelection

use primitive boolean array instead of wrapper Boolean

minor comment cleanup and fixes
remove final modifier from DependencyRunner
add service provider interfaces

moved DataStorage.StoragePath into own class file
add InternalProviderManager

move permissions providers and add yaml storage provider in internal package.

add getProviderManager static method to GenericsLib static class
refactor BatchOperation to DataBatchOperation
remove redundant code
prevent null reference exception

prevent constant null reference exceptions if for some reason an exception occurs while GenericsLib is enabling.
add ProviderLoader

add ProviderLoaderSettings

loads provider modules from folder plugins/GenericsLib/providers
add commands to list GenericsLib based plugins
allow setting data storage provider per plugin

The default data storage provider is used unless a specific data storage provider is set.
show script engine name and version when listing scripts
add final modifier to internal classes
fix for 1.8

Quick fix using Potion.fromDamage, originally brute forced the Potion due to issues with getting the proper Potion instance.