Make swap work on non-assignable structs

Simply put, swap forgot to check for actually assign-ability, before looking at it's elaborateness.

This will make swap take the memswap road, if the object is not assignable.