Major rewrite changing ++ to work like ::, i.e length-increasing

This makes the appending a single element from the left simpler