update and add dual likelihood

cf: `CLogitDVGLikelihood`
```c++
	/** get the upper bound for dual parameter (lambda)
	 *
	 * @return the upper bound
	 */
	virtual float64_t get_dual_upper_bound() const{return 1.0;};

	/** get the lower bound for dual parameter (lambda)
	 *
	 * @return the lower bound
	 */
	virtual float64_t get_dual_lower_bound() const{return 0.0;};

	/** whether the upper bound is strict
	 *
	 * @return true if the upper bound is strict
	 */
	virtual bool is_dual_upper_bound_strict() const {return true;};

	/** whether the lower bound is strict
	 *
	 * @return true if the lower bound is strict
	 */
	virtual bool is_dual_lower_bound_strict() const {return true;};
```