Add the ability to merge nodes that are next to each other

When a new selection is next are to another one, we try to merge the nodes together, if a selection is in the middle of two notes then we can merge them all into one. Also the recursion had been replaced with a NodeIterator so that it uses the browser supported functionality. I've also remove the ridiculous thing of adding space on either side inside the span as this was a ridiculous solution and needs to be rethought