Drop UTF-8 BOM from the beginning of input.

Code from https://github.com/jaspervdj/stylish-haskell/blob/2188b248a37157ba1f5c35a8674890ed80d0a3ef/src/Language/Haskell/Stylish/Parse.hs
Add utilities for ignoring CPP.

Code from https://github.com/jaspervdj/stylish-haskell/blob/2188b248a37157ba1f5c35a8674890ed80d0a3ef/src/Language/Haskell/Stylish/Parse.hs