Bug fixes in Animation3D

The registerListener method now checks whether the same listener was
already added.
Added a check in the update method to prevent multiple end events from
firing.
Fixed an inverted interpolation bug.
Merge pull request #604 from AndrewJo/animation-rewrite

Bug fixes in Animation3D