Different allocator templates are not comparable.

Imagine "bit" as a value_type: all basic_bitvector have the same
value type.  This change simulates the common behavior of the STL
containers.
Support implicit convert from different storage.

Similar to operator==, allocator templates must be the same.
Since implicit conversion is supported, operator= also works.