FlxEmitter refactor (do not merge), closes #587

This is a pull request for a refactoring of `FlxEmitter`, which has several goals:

* Merge `FlxEmitter` and `FlxEmitterExt`
* Remove redundant variables (`lifespan` and `life`, `x` and `y` and `xPosition` and `yPosition`
* Create a consistent logic for setting start, end, min, and max values (see `Range`, `Bounds`, `RangeBounds` and `FlxPointRangeBounds`)
* Rename variables to be consistent with `FlxSprite` (`angularVelocity` instead of `rotation`)
* Allow greater control over start, end, min, and max values

This is very much a WIP, but I wanted to get some feedback on the changes early. Usage:

````
_emitter = new FlxEmitter(10, 10, 200); // unchanged
_emitter.velocity.setAll(100, -50, null, null, 200, 50); // finer control over velocity
_emitter.elasticity.setAll(0.8); // elasticity vs. bounce
````

Basically everything will be `Bounds`, `RangeBounds`, `Range`, or `FlxPointRangeBounds`, allowing devs to set variables with a logical method (e.g. `velocity.start.min.x = 5;`) or all at once via `setAll()`.

Comments appreciated! Thanks!
So you can pass in nothing for `Alpha` and use `Min` and/or `Max` to define
the range for the resulting `FlxColor`.
On Jun 13, 2014 1:53 AM, "Gama11" <notifications@github.com> wrote:

> In flixel/math/FlxRandom.hx:
>
> >  	 */
> > -	public static function color(Min:Int = 0, Max:Int = 255, Alpha:Int = 255, GreyScale:Bool = false):FlxColor
> > +	public static function color(?Min:FlxColor, ?Max:FlxColor, ?Alpha:Null<Int>, GreyScale:Bool = false):FlxColor
>
> Why do these need to be nullable?
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/HaxeFlixel/flixel/pull/1174/files#r13739979>.
>