Added documentation for node metadata use in MST,
Added a line for node that the MST starts on so that the parent
is nil. This fixes a possible bug where MST / Dijkstras is run multiple times.
Also added a capacity to making an mst slice to speed up MST (a tiny amount)
mst has (# of nodes -1) edges, not (# of nodes) - minor fix
Changed a range from indexing to _, copy

Changing 'for i := range g.nodes' to 'for _, node := g.nodes'
reduces the number of indexes into the graph from three to
one (I needed three accesses to make an Edge). Doing this
reduces MST timings by a tiny amount, and every bit counts.
First attempt at MaxSpacingClustering algorithm

Although the obvious first approach to clustering is to use Kruskal's
algorithm, I want to attempt using Prims and thus using my MST function
to assist with clustering. My approach to doing this is to
1) Get the minimum spanning tree for the entire graph
2) Sort the edges of this tree and remove the (n-1) largest edges,
     where n corresponds to the number of clusters. The last edge removed
     will be the maximum spacing between the clusters.
3) Build the clusters by walking through the nodes. Any node that has a parent
     equal to nil belongs to the cluster number set in (2). If the parent is not
     nil, the cluster number for the node is set by the parents cluster number.