Add device_vector::operator=(const host_vector &) (and vice versa) to
eliminate unintentional temporary copies during assignment.

Reported by Shiyin Kang

Fixes #325