[B+C] Adds the getSlot method to BlockDispenseEvent. Fixes BUKKIT-5142

#### The Issue:

Currently, there is no way to get which slot of a dispense/dropper was used from a `BlockDispenseEvent`. This makes it impossible for rollback plugins from determining how to reset a dispenser/dropper's inventory. 

#### Justification for this PR:

Adding the getSlot method allows plugin developers to detect which slot was used for dispensing an item. This can be used in a, for example, an antigrief/rollback plugin, which stores the slot used, and later adds the appropriate item to it.

#### PR Breakdown:

In all of the `DispenseBehavior` classes, I've changed the method signatures of `a` and `b` to add a `slot` parameter. This is passed into the constructor for  `BlockDispenseEvent`. The internal variable 'l' is used in `BlockDispenser` and `BlockDropper` for `slot`, as it's the random number used for determining the slot to use.

#### Testing Results and Materials:

I've created a plugin called [SlotTester](https://www.dropbox.com/s/7i7k0urp5881bl7/SlotTester.jar). To use it, compile the CraftBukkit in the PR against my Bukkit PR listed in the Relevant PRs section. Load the plugin, then load and fire a dispenser of hopper. You will see "Slot: #" printed in the chat, where "#" is the number of the slot used, from 0 to 8. The source code can be viewed [here](https://github.com/Aaron1011/SlotTester).

#### Relevant PR(s):

B-1022 -  https://github.com/Bukkit/Bukkit/pull/1022

#### JIRA Ticket:

BUKKIT-5142 - https://bukkit.atlassian.net/browse/BUKKIT-5142




(though the code looks pretty straightforward, I don't know how much could
go wrong)


On Sat, Jul 19, 2014 at 10:19 PM, Evan G <eg1290@gmail.com> wrote:

> Right, it was kind of a rhetorical question. (And it being at the end of
> the craftbukkit comment was why I suggested it was a bad regex) I was
> wondering if anyone had compiled the code yet, and if these semicolons were
> screwed up in a later push.
>
>
> On Sat, Jul 19, 2014 at 10:11 PM, Travis Ralston <notifications@github.com
> > wrote:
>
>> In src/main/java/net/minecraft/server/DispenseBehaviorFlintAndSteel.java:
>>
>> > @@ -36,7 +36,7 @@ protected ItemStack b(ISourceBlock isourceblock, ItemStack itemstack) {
>> >              ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem());
>> >              IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.a.get(eventStack.getItem());
>> >              if (idispensebehavior != IDispenseBehavior.a && idispensebehavior != this) {
>> > -                idispensebehavior.a(isourceblock, eventStack);
>> > +                idispensebehavior.a(isourceblock, eventStack, slot) // CraftBukkit - pass in the slot used;
>>
>> Missing a semicolon means it does not compile. If you look at all the
>> lines that have semicolon problems though, it's simply at the end of the
>> //CraftBukkit comment.
>>
>> —
>> Reply to this email directly or view it on GitHub
>> <https://github.com/Bukkit/CraftBukkit/pull/1332/files#r15147371>.
>>
>
>