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.
You know, after messing around with it some more, I think it's kind of nice to still be able to hot swap and let the result be decided at the time of release, so the player can cycle through arrows until they find one they want without having the bow draw interrupted, in which case my above solution would do the trick perfectly.

What do you think? Should players be forced out of pulling the bow when they pass over an unusable arrow, or simply have the arrow fail to fire if they release with it selected and are not supposed to be able to shoot it, while allowing them to cycle as they please to find the right arrow?