Various bugfixes

 * Introducing calculation IDs. From now on, each round of calculating
   or updating mapping data gets an unique ID. This ID is used to
   differentiate between fresh and old data, when doing incremental
   updates of the mapping data. (Needed to solve #35).
 * In `_performUpdateOnNode()`,
   * never try to directly update the children of *irrelevant* nodes.
     Instead, going upwards, find a node that at least have a parent that
     is relevent, and work with that node. Fixes #34, problem 2
   * when dealing with irrelevant nodes, delay calling
     `_alterSiblingsMappingData()` to after the partial re-scan has
     finished. (Earlier, we have done it right away, but that can't work
     for previously irrevant nodes, which has no representation in the
     stringified form.) Fixes #35
 * In `_alterAncestorsMappingData()`,
   * handle irrelevant nodes by
     * directly assuming a 0 previous length,
     * getting the new parent content using `getNodeContent()` (because
       we can't insert the new position, because we don't know the right
       position)
     Fixes #34, problem 1
   * added lots and lots of internal error checking
 * In `selectNode()`, text nodes that only contain whitespace are no
   longer selected; hence these nodes are now always marked as irrelevant,
   and not mapped. This change was necessary because the handling of these
   nodes by WebKit's selection API was very fragile; selecting them
   sometimes resulted in ramdomly selecting the whole parent node.
   This was the cause of existence of the so-called *mystery nodes*,
   which caused many complications. They are all gone now. Fixes #32.
 * Various cosmetic changes