Change a lot
Test Passed

- add binary function arg to reduce_by_bucket
-- global operator overloading fails for tuple
- tupleN(plus|minus) funtor defined