Prevent setting a FlxSprite to an invalid frame

Fixes https://github.com/FlixelCommunity/flixel/issues/13

Prevents an "out of range" frame number from being set either by an
animation, or by manually setting the `frame` property.

Adds new getter/setter `numFrames` where user can manually specify how
many frames an animation has (in case some frame are empty).

To go hand in hand with this is the read-only property `maxFrames` which
calculates how many frames can fit on that sprite sheet. NOTE: it rounds
up, so sprites may "hang off the edge" if the sheet is the wrong
dimensions. This may be fixed in the future depending on how other
applications handle "overhanging frames".
Remove unused property `frames`

It wasn't being used anywhere, and I'm assuming since it is public, that
it was meant to be read-only.
Cache value for `maxFrames`

No need to re-calculate it every time you call the property!

It only needs to be updated whenever you change the bitmap associated
with the sprite sheet.
Fix typo default value of `numFrames`

Originally I was defaulting _numFrames to -1 until I realized it was an
unsigned integer. Rather than change it to a signed one, I realized that
you could never have zero frames, and let 0 be the default value.

However, I forgot to change this in the actual `numFrames` getter.
Change old property `frames` to the new `numFrames`

I finally found where this property was being used! No wonder it was
public.
Add depreciated property `frames`

For backwards compatability, add depreciated getter `frames`.

Also fix tiny typo in description of `numFrames` (no use creating a new
commit just for that tiny thing).
Merge pull request #174 from IQAndreas/dev-numframes

Prevent setting a FlxSprite to an invalid frame