factory monad_error_traits for optional.
Make use of traits refinement.
xxx_category specializations seems not needed when there is no category deduction. So, replace xxx_category specialization by xxx_traits specialization.