Parameterise Records on the error type

Essentially, `data Records a` becomes `data Records e a` and all current usages of `Records a` become `Records String a`.

This makes `Records` a Bifunctor, Bifoldable, and Bitraversable. For example, you can use `bifor_` in place of `for_` to capture any parse errors (rather than just discarding them when using the `Bifoldable` instance.

A dependency on `bifunctors` has been added. I am under the impression that these typeclasses will be heading to base in 7.10.