Added BreakTimes, Tolerance. Changed DefuseTime, BombBlock.

Some defaults like the BombBlock was changed to TNT.
And DefuseTime was changed to 35.

This created a problem:
* i was able to break TNT x35 in 8.6 seconds.
* However, it took another test over 15 seconds.

So this is a definite flaw in the design
that the BreakTime for X blocks isn't the same for all players.

Probably due to network or latency issues.

The next version of config.yml will NOT have
* Tolerance:
* BreakTimes:

In this version, DefuseTime is the number of times
that you have to break the BombBlock to defuse it.

Next version, it'll be the number of seconds required
to defuse the bomb.
Added config options + getters/setters

Very soon, I am going to change the fields from public to private.

So I added getters & setters.

Also, I started to add configuration options.
To make the plugin fully configurable.

Please note that eventho I modify arenas.yml, I do NOT save it.
BattleArena does the actual saving of the file.

And I still have not figured out how to serialize and
de-serialize the BombBlock in arenas.yml

Self reminder: That future getters and setters for the
Base Locations should go thru getExactLocation() method
to prevent any location checks from failing.
Removed hardcoded references

I removed hardcoded reference to
HARD_CLAY (the bomb block)
BREWING_STAND (the base block)

And I replace those references with variables set by
config.yml

So now, the plugin is fully configurable.

Also, bases are now reset onStart() & onFinish()

FIXED line 444:
to cancel the DefuseTimer instead of the PlantTimer

Self Reminder:
Add location check to onBombDefusal():426
Added getItemStack()

I added getItemStack() in order to use it on arenas.yml.
to get node:

arenas.{arenaName}.spawns.{index}.spawn

where

spawn: HARD_CLAY 1

is the bomb block.

Cannot get this node with getString() or getItemStack().
Have to use the BattleArena API to deserialize it.
[Untested] hides FakePlayer in database +

added new methods:
getPlantSuccess() returns WLT.WIN
getPlantFailure() returns WLT.LOSS
getDefuseSuccess() returns WLT.TIE

added these methods so that I can remove the WLT import from
the other files (because this is an optional dependency and
BattleTracker.jar and it's WLT class may not exist).

Also, this adds readability and defines
WIN as a Successful Bomb Plant that has destroyed an enemy base.
LOSS as Bomb Plant that did NOT destroy a base due to being defused.
TIE as a Bomb that was Defused (given to the defuser).

Also, I tried to hide the FakePlayer 'Bombs Planted Defused'
in the database. But this is not tested.
Handles the conversion from Material.X to InventoryType.X

the EnumMap is now private static final.
And it is initialized with a static method now.

This is a really nice conversion class.

But unfortunately, future versions will NOT have a need
for this class.
Added config options

And also change the variable 'i' to duration
which makes the code more readable.

Contains un-needed Material import.
Added config options +

instantiates a new DefuseCounter
that keeps track of how defuse attempts for each player.
Keeps track of BlockBreaks for each player

Unfortunately, when I tested this class
it took me 8.6 seconds to break TNT x35
while it took another tester over 15 seconds to destroy the same 35 blocks
of TNT.

This must be a latency problem.

And because the time to break X number of blocks will not be the same for
all players, I am going to have to use an alternative game-player mechanic
for defusing the bomb.

In future version, the defusal mechanic will be the same for planting the
bomb: InventoryOpenEvent

So the first test for InventoryOpenEvent will be if a DetonationTimer is
running. If so, start a DefuseTimer.

if not, check and see if it's the bomb carrier at the enemy base.
Added new commands

Some of which are going to be removed because they rely on OLD mechanics.

First of all, most of the usage="" parameters were fixed to display
correctly for players using /bomb help.

2nd, permission nodes were changed.

Commands:

/bomb spawnbomb <arena>
* Bombs are now spawned in index=1
* Added despawn option which equals the duration of the arena.
* despawn option was NOT tested to make sure it gets a value successfully.

/bomb setconfig BombBlock <hand>
/bomb setconfig BaseBlock <hand>
/bomb setconfig DatabaseTable <String>
/bomb setconfig <option> <Integer>
* all of these commands set options:
** IN MEMORY
** in config.yml
** in arenas.yml

Altho, arenas.yml is saved by BattleArena. So any changes are not yet
saved to file until a reload or restart.

/bomb test
* Use this command to simulate the bomb defusal mechanics
* by breaking the BombBlock X number of times.
* This command registers the BombBreak Listener.
** The BombBreak Listeners unregisters itself when it's done.

/bomb record
* This handy little command will record the length of time required to
* destroy a particular block in Minecraft and save the result to
* config.yml.
* The result is measured in milliseconds.
* It works by registering the BlockBreak Listener.
* The BlockBreak Listener unregisters itself when it's done.