Add a desugar step for implicit Prelude. #224

todo: tests
Move 'hasLanguagePragmas' into Fay.Compiler.Misc
Improve desugarImplicitPrelude following review

* use Biplate functions instead of pattern matching
* respect NoImplicitPrelude pragma
Enable ImplicitPrelude by default
Switch back from uniplate functions

at least until I get them
Don't tell GHC to disable ImplicitPrelude
Tests for implicit prelude
Make Desugar polymorphic again

`Desugar a` changed to `Desugar l a` to allow the desugaring to happen
with any annotation type
desugar before processing imports
try putting desugar before compileImport
compile the right import list
fix broken tests
Remove duplicated desugar calls and make some style adjustments (closes #373, closes #224)