Rewrite a few instances.

The cool part about this code is that we're fundamentally working with a type that is the composition of three functors, (a->), Maybe, and (a,) - these changes attempt to make that more explicit.

Also, the "Alternative"-ness we results from including Maybe in this stack, so we use Maybe's alternative instance.