function Transitionable(initialState) {
    this._queue = [];
    this._from = null;
    this._state = null;
    this._startedAt = null;
    this._pausedAt = null;
    if (initialState != null) this.from(initialState);
}
A state maintainer for a smooth transition between
   numerically-specified states. Example numeric states include floats and
   arrays of floats objects.

An initial state is set with the constructor or using
    {@link Transitionable#from}. Subsequent transitions consist of an
    intermediate state, easing curve, duration and callback. The final state
    of each transition is the initial state of the subsequent one. Calls to
    {@link Transitionable#get} provide the interpolated state along the way.

Note that there is no event loop here - calls to {@link Transitionable#get}
   are the only way to find state projected to the current (or provided)
   time and are the only way to trigger callbacks and mutate the internal
   transition queue.

@example
var t = new Transitionable([0, 0]);
t
    .to([100, 0], 'linear', 1000)
    .delay(1000)
    .to([200, 0], 'outBounce', 1000);

var div = document.createElement('div');
div.style.background = 'blue';
div.style.width = '100px';
div.style.height = '100px';
document.body.appendChild(div);

div.addEventListener('click', function() {
    t.isPaused() ? t.resume() : t.pause();
});

requestAnimationFrame(function loop() {
    div.style.transform = 'translateX(' + t.get()[0] + 'px)' + ' translateY(' + t.get()[1] + 'px)';
    requestAnimationFrame(loop);
});

@class Transitionable
@constructor
@param {Number|Array.Number} initialState    initial state to transition
                                             from - equivalent to a pursuant
                                             invocation of
                                             {@link Transitionable#from}