refactor markers placements

My initial intention was to add placement methods for placing markers symbolizer on the first or last vertex of path.
I found code for marker placement duplicated in multiple files, only "line" placement was isolated in markers_placement.hpp.
So I tried to isolate particular placement methods into separate classes and added two new classes for my new placement methods.