add FlxTypedWeapon

Summary of this PR:

- Added FlxTypedWeapon due to the depreciation of `setAll()`. The replacement `ForEach` requires strictly typed members.
- Moved firing logics from FlxBullet to FlxTypedWeapon.
- Enhanced the bullets creation process. Weapon now calls a custom factory function to create a bullet. (`BulletFactory` replaces `BulletType` in constructor)
- Removed `onFireCallback` and `onFireSound` (they are basically duplicates of `onPostFireCallback` and `onPostFireSound`)

Is there any official preference in using real or abstract enum? Btw any
coding style guide for enum?
On 23 Jun, 2014 7:53 PM, "Gama11" <notifications@github.com> wrote:

> In flixel/addons/weapon/FlxWeapon.hx:
>
> > @@ -321,37 +314,61 @@ class FlxWeapon
> >  		// Faster (less CPU) to use this small if-else ladder than a switch statement
> >  		if (Method == FlxWeapon.FIRE)
> >  		{
> > -			currentBullet.fire(launchX, launchY, _velocity.x, _velocity.y);
> > +			internalFire(currentBullet, launchX, launchY, _velocity.x, _velocity.y);
> >  		}
> >  		else if (Method == FlxWeapon.FIRE_AT_POSITION)
>
> It probably makes sense to replace all these constants with an enum.
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/HaxeFlixel/flixel-addons/pull/85/files#r14071294>.
>