Remaining find algorithms implemented, N4071

The remaining find algorithms have been finished and are ready to merge into the master branch. They are

* `first_first_of`
* `adjacent_find`
For bidirectional iterators, an implementation may choose to use the last iterator, and only use the first one as a sentinel (thus never dereferencing it). This is what happens for libc++ and libstdc++, which have efficient implementations of `find_end`. The throwing callback shall be added to both iterators.