Evolutionary structural optimisation based on boundary representation of NURBS. Part I: 2D algorithms