Updated to use distance in count for faster counts on random access ranges
Update first and last to match c# linq extensions. They now throw an exception if it cant be found
Find now works on maps and sets, for faster searching
Find now can search over strings as well