issue #95: no double call to _lp.*branch()

_lp_smart_mark is now called with an argument specifying if a CVS mark
is needed
noticeable execution speed improvement
refactorisation for fixes concerning issue 95/96