Redesign boundary

Redesigned how the boundary surface is handled in 2D. It is no longer a separate entity - it is stored as an integer field on the element.