FlxEmitter refactor, 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!
I'm not a huge fan of this variable name tbh, it kind of implies that it's a global setting for `solid` or something like that to me. Also, the description is misleading, `updateHitbox` doesn't really do anything in conjunction with `angle` - there are no rotated hitboxes in flixel.