ensure `evil-with-undo` ends with exactly one boundary (fix #382)

After using this macro `buffer-undo-list` or `evil-temporary-undo`
should contain the undo information with exactly one boundary at the
beginning (so that subsequent modifications do not merge with those
executed within the body of `evil-with-undo`).

In the old code the resulting `buffer-undo-list` might contain two
boundaries (which is forbidden) if the modifications run within the
body added a boundary to the beginning of `buffer-undo-list`
themselves. In particular, this happens when repeating a previous
modification using the dot-command, because `evil-end-undo-step` adds
such a boundary.
version 1.0.9
merge stable-1.0