I really dislike the naming of "SpellEvent_GetTargetUnit()" and stuff, but I'm awful glad it flows so well with standard WC3 naming for functions. I think it might be better if instead of RegisterFinishResponse(ABILITY_ID, function OnCast), it had something like RegisterSpellResponse(ABILITY_ID, RESPONSE_TYPE_FINISHED, function OnCast). I realize it's a bit more typing, but I think it's more appropriate to change the integer in there than to change the function call you're using.
Outside of that, this is awesome. Approved.
You mispelled the keyword 'library' in the first post. Please fix that. (I could do it for you, but I would prefer you to)