interpolateArray (srcArray, newLength) {
        'use strict'

        const sourceLength = srcArray.length,
            newArray = [typeof srcArray[0].clone === 'function' ? srcArray[0].clone() : srcArray[0]],
            factor = (sourceLength - 1) / (newLength - 1)


        for (let i = 1; i < newLength - 1; ++i) {
            const f = i * factor,
                before = Math.floor(f),
                after = Math.ceil(f),
                delta = f - before

            newArray[i] = this.lerpTypeAgnostic(srcArray[before], srcArray[after], delta)
        }

        newArray.push(
            typeof srcArray[sourceLength - 1].clone === 'function' ?
                srcArray[sourceLength - 1].clone() :
                srcArray[sourceLength - 1]
        )

        return newArray
    }
Performs linear interpolation (lerp) on an array.

For example, lerping [1, 10], with a `newLength` of 10 will produce [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].

Delegates to `SPE.utils.lerpTypeAgnostic` to perform the actual
interpolation.

@param  {Array} srcArray  The array to lerp.
@param  {Number} newLength The length the array should be interpolated to.
@return {Array}           The interpolated array.