Right now `push` does `pushAll [ x ]`. One would use an `STArray` for good performance and this implementation undermines this.