Fixed cabal file

Forgot to add the lens dependency for main in the last commit
Cleaned up LensPatch and added exceptions

A few patterns of case analysis kept showing up, so I figured I'd write
something to handle it for me.
Also, wrote some functions to handle applicative patches (this won't
come from applying JSON patches, but is useful functionality)
Added safer, less flexible alternatives

Thankfully they're flexible enough for patch, so it will use those
Sadly, the safer alternatives are *a bit* slower on account of getting
than setting rather than mapping over, but sometimes that tradeoff's
worth it
Added safe operations to LensPatch export list
Added Haddock Documentation, changed error type

Haddock documentation is now a thing
All operations that returned Either Text a now return Either String a