Resolution for #439: make Aeson Prisms law-abiding

Here's a proposed fix for #439.

I added some doctest tests for the instances that were buggy in #439; these tests are in a named Haddock block at the end of `Data.Aeson.Lens`.