reveal(duration = 0, delay = 0) {
        // Number of cycles in duration
        let cycles = duration / this.options.speed || 1;

        const run = () => {
            clearInterval(this.interval);
            this.running = true;
            this.interval = setInterval(() => {

                // Get elements that haven't been fully revealed
                let elements = this.elements.filter(el =>
                    !el.bitmap.every(bit => !bit));

                // Decay each by pace and write
                each(elements, el => {
                    let pace = Math.ceil(el.value.length / cycles);
                    el.decay(pace).write(this.options.characters, this.options.exclude);
                });

                // If all elements are revealed, stop and init
                if (!elements.length) {
                    this.stop();
                    each(this.elements, el => el.init());
                }

            }, this.options.speed);
        };

        setTimeout(run, delay);
        return this;
    }
Start a new interval, obfuscating fewer characters
on each cycle at pace to finish within duration
milliseconds. Optionally, delay by delay millseconds.

Once all elements are revealed, call stop() and
initialize each element.