Queue animation

What this does:

* instead of blindly running an animation, the FoundationApi checks if an animation is in progress. Once it's not, it runs the queued animation.
* it allows ALL animations to finish, there is no way to cancel an animation.