FlxTypedButton refactor, closes #763

- doesn't use flash events anymore
- created FlxButtonEvent class  (containing the callback, callbackParams and sound) to get rid of redundant code - breaking change!
- update logic is more logical / readable
- adjusted button release logic to fix a bug with multitouch input where releasing one button while two are pressed would release both (the real bug behind this is probably somewhere within FlxTouchManager, need to investigate)
- destroy() now uses FlxG.safeDestroy()
- labelOffset is now (default, null)
- FlxButton now has a new OnClickParams constructor param
- FlxPoint now implements IDestroyable
- FlxVirtualPad, PxButton: Compatibility with the FlxTypedButton refactor
- FlxG.safeDestroy() now sets the Object to null and is inlined

Breaking change, yes, but greatly improves the button API imo. Sorry @larsiusprime, this probably breaks all sorts of things in flixel-ui. Should probably not merge this until you pushed your flixel-ui / RPG interface changes.