update and add dual likelihood

this can be change.
but `get_mu_dual_parameter()` will work different from  `get_variance_dual_parameter()`.
my implementation only stores lambda since `alpha = lambda - data_label`

If do so, user can change lambda `get_variance_dual_parameter()`  but cannot change alpha since alpha  `get_mu_dual_parameter()`  is computed based on lambda, which means there two methods work differently.