Remove unused code
Support 0 duration animations.
Reverse animations work.
Lockers now animate properly.
Clean up animation logic considerably using animations lib.
Correct exception throwing code.
Synchronize animations.

- Update PROTOCOL.md: we've added "elapsed" to "animations" command.
- Update SpriteAnimation: client accepts elapsed and uses that to prime its animation routine.
- Fixed some random bugs with tile frames being set incorrectly during animation.