[assign] Add variant support

This PR adds variant support to the assign (conversion) algorithm. I'm not sure that the other assign (e.g. assign_values) algorithms need variant support.
Note to reviewers : I could not implement the test the way it is done in test_length.hpp (that was suggested by Bruno in an other PR), that sounded not very practical.