An alternative approach, similar to previous versions of the library, with types indicating the mode of automatic differentiation in use. The core functionality works, but the 'feasible' function does not.
Resolves #2, updating everything to work with v4.* of Numeric.AD. The penultimate commit shows an alternative approach.