Misc changes

Here's my reasoning about my changes to the warnings flags:

* I removed `-fno-warn-incomplete-patterns` because it means that it's easy to miss places where code throws exceptions.  When it can be proven that the case won't happen, I think it's best to use a case like `_ -> error "Impossible: here's why"`.  The main issue with this is that I needed to comment out an instances `SPECIALIZE` pragma, or get a pile of `match_co: needs more cases` warnings.  Seems like something's strange there!
* `-fwarn-incomplete-record-updates` is a warning I think should be implied by `-Wall`.  Records for sum types are a code smell, anyway.
* I removed `-fno-warn-orphans`, because I think it's best to be aware of what orphans a package exports.

I didn't fix the following warnings:

```
[1 of 7] Compiling Control.Lens.Simple ( src/Control/Lens/Simple.hs, dist/build/Control/Lens/Simple.o )
[2 of 7] Compiling Data.LensRef.Class ( src/Data/LensRef/Class.hs, dist/build/Data/LensRef/Class.o )
[3 of 7] Compiling Data.LensRef     ( src/Data/LensRef.hs, dist/build/Data/LensRef.o )

src/Data/LensRef.hs:148:1: Warning:
    Defined but not used: ‘correction’
[4 of 7] Compiling Data.LensRef.Common ( src/Data/LensRef/Common.hs, dist/build/Data/LensRef/Common.o )
[5 of 7] Compiling Data.LensRef.Pure ( src/Data/LensRef/Pure.hs, dist/build/Data/LensRef/Pure.o )

src/Data/LensRef/Pure.hs:326:1: Warning:
    Defined but not used: ‘updateFun’

src/Data/LensRef/Pure.hs:383:1: Warning:
    Defined but not used: ‘allUnique’
[6 of 7] Compiling Data.LensRef.Fast ( src/Data/LensRef/Fast.hs, dist/build/Data/LensRef/Fast.o )

src/Data/LensRef/Fast.hs:238:72: Warning:
    Defined but not used: ‘st’

src/Data/LensRef/Fast.hs:242:37: Warning:
    Defined but not used: ‘st’

src/Data/LensRef/Fast.hs:245:56: Warning:
    Defined but not used: ‘st’

src/Data/LensRef/Fast.hs:264:9: Warning: Defined but not used: ‘st’

src/Data/LensRef/Fast.hs:333:46: Warning:
    Defined but not used: ‘st’
[7 of 7] Compiling Demo             ( src/Demo.hs, dist/build/Demo.o )
```

I imagine it's highly unlikely that these warnings about `st` are bugs, but I didn't suppress them anyway (by using `_st`), just in case.

I used this command from [here](http://stackoverflow.com/a/10120431/1164871) to strip whitespace:

```
git grep -I --name-only -z -e '' | xargs -0 sed -i -e 's/[ \t]\+\(\r\?\)$/\1/'
```