Added enable_if alias template
* makes simplification of sfinae overloads possible
* enable_if now resides in the template arguments instead of obfuscating the return type
* modified sorter, mapper and weigher implementations accordingly