Bug 903: clean swap API regarding extra enable_if parameters, and add failtests for swap