minimumRequiredColCount() {
        let best = 0;
        for (let col = 0; col < this.columns.length; col++) {
            best = Math.max(best, this.columns[col].maximumGateWidth() + col);
        }
        return best;
    }
@returns {!int} The minimum number of columns needed to hold the gates in the circuit, accounting for their width
and assuming the gate positions are fixed (i.e. columns can only be added or removed from the right).