Nth element

Added benchmark, modified the tests and implemented a selection algorithm. ~5x improvement...
it looks like `boost::compute::lambda::_1` is getting found rather than `boost::compute::placeholders::_1` (which is used by `bind()`) which is probably what is causing the error you see. Try doing this:
```
using boost::compute::placeholders::_1;
partition(first, last, bind(compare, _1, value), queue);
```