Add an opt_map function to Utils and change a bunch of code to use it

Summary: Add a function for ordinary mapping over options to Utils and replace the option maps that I found with it.

I looked for option maps with: grep -r -- 'Some [a-z]* -> Some'

Reviewed By: @elgenie

Differential Revision: D1442431
Improve error messages through instantiation

Summary: During generic instantiation, we'd drop part of the position
information on the floor. This information can be quite useful, to be
lead through a potentially long path of generic instantiations to the
place that things actually ended up incompatible. This diff tracks the
location of all those instantiations and prints them as part of the
error message. In some cases, this can lead to a somewhat longer error
message, but it's IMO worth it to have the added information -- in some
pathological situations, there would way too little error info. More
error info is always better, right?

This came up when trying to work on async generators, since I think I
want to make `Continuation` a type alias for `Generator`, and
incompatibilities are painful to read without this information (see unit
test).

Reviewed By: @elgenie

Differential Revision: D1439540