Added ISpecialBow for more flexibility with default Quiver

While working with the Quiver API, I was impressed with its flexibility, being able to accomplish almost everything I wanted with just the default implementations; however, I thought it would be very cool for modders using the default ItemQuiver to have a little more control over a few things:

1. Determining whether an arrow may be nocked or not, allowing for firing requirements that would otherwise only be possible using a custom IArrowContainer2 implementation (and even then, if you equip the default ItemQuiver you might be able to circumvent said requirements). This also gives custom bows an opportunity to do other things they may need to do during nocking, such as adjusting NBT tags.

2. Determining the order of and which specific IArrowFireHandlers should be applied, allowing custom bows to use their preferred handler(s) first or even completely ignore the default one.

Note that these are already possible when creating a custom quiver (i.e. IArrowContainer2), but not when using the default ItemQuiver. Custom quiver implementations could of course ignore ISpecialBow entirely, but this way custom bows can play nicely with the default quiver, at least, and still create a custom quiver if they desire.
I hadn't thought about hot-swapping, but that can easily be prevented either in the way you suggested, or simply by adding an additional check for the ISpecialArrow during the release event:

ItemStack stack = QuiverArrowRegistry.getArrowContainer(event.bow, event.entityPlayer);
            if(stack != null){
                IArrowContainer2 quiver = (IArrowContainer2) stack.getItem();
// check for special arrows again here
    ItemStack arrow = quiver.getStackInSlot(stack, quiver.getSelectedSlot(stack));
if (arrow != null && arrow.getItem() instanceof ISpecialArrow && !((ISpecialArrow) arrow.getItem()).isUsableBy(arrow, event.bow, event.entityPlayer)) {
	event.setCanceled(true); // arrow should not be fired by this player/bow
	return;
}