Fix bug with arrow-end/start markers sharing properties

This pull request fixes the bug in arrow end/start markers sharing properties (see at least issues #471 #530 #619). This fix assigns a unique ID to every marker using the ID of the path object. Thus, for each arrow on every object, a ```marker``` element is created inside ```defs```. There still is only one path element in ```defs``` for each type of marker. The removal of unused paths and markers still works as well.

I think creating one element for each arrow is an acceptable compromise and a simple fix.