Find the index of a string (needle) in an indexable, ordered collection of strings (haystack). Raise an exception if the needle is missing.
If there is more than one occurrence then return the smallest index to the needle.

As an extra task, return the largest index to a needle that has multiple occurrences in the haystack.
