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.
One possible issue with this is that if the nock event is denied by a special arrow, the player will not be able to fire a standard arrow should they have one elsewhere in their inventory, which was the previous behavior of BG2.

This could be fixed by adding some extra checks here and in ArrowLooseEvent, but it isn't nearly as clean that way and may not be worth it. Do you have any thoughts on this matter?