Merge partial implementation of standards proposal N3960

This is a request to merge a partial implementation of standards proposal N3960, adding parallel functionality to the standard template library. The reason for this partial merge is to offer additional performance enhancing tools to the master branch from the currently supported functions. As of the n3960 latest commit, the following functions are implemented:

* `copy` , `copy_if` , `copy_n`
* `move`
* `count`, `count_if`
* `reduce` , `transform`
* `fill`, `fill_n`
* `for_each`, `for_each_n`
* `swap_ranges`

This set of functions will be ready to be used and implemented into currently existing code to improve performance. Any issues that arise from the use of these functions can be used to improve future implementations and let us know what, if anything, we should devote more time to.
If `first == last` the range is empty, dereferencing `*first` would be wrong. Result should be `0`