Don't map empty objects as an attribute with value "[object Object]"

Oops. Empty objects were incorrectly being set as attributes with the
value "[object Object]", which would cause updateStyles to crash in
rather spectacular ways when setting the same text alignment multiple
times on a paragraph style that had an empty text properties obj.
Merge pull request #401 from peitschie/merge-obj-fix

Don't map empty objects as an attribute with value "[object Object]"
Add multi-letter insertion at doc start to benchmark (post-cache prime)
Avoid slow calls when updating StepsTranslator cache

unfilteredDomOffset is extremely slow under certain conditions, greatly
limiting the iteration speed. This patch eliminates all calls that would
trigger this slow call, improving iteration performance.

An additional advantage of this is that the adjusted logic now avoids
the somewhat messy logic that involved diving into the the container
and offset just in case the container's child was a paragraph as
well. By using isBeforeNode, the bookmark creator now knows that
the current node is fetched by getCurrentNode.
Bring API dox up to standard
Rename variables to improve code clarity