warn against the byte order mark if exists; fixes #545

1. I do not have a strong preference over not checking the encoding on *nix, and I'm only slightly in favor of skipping it there because the encoding problem rarely occurs there, and doing readLines()/iconv() is an extra step although it may only take a few milliseconds in most cases.
2. *nix users should rarely create the BOM because most applications do not write this mark. Even if they do (using some tricks), it does not hurt anyway. By comparison, we warn on Windows because BOM hurts.

Regarding the Edit, I explained it above: if a *nix user got an app from a Windows user, even `checkEncoding()` does not help because `getOption('encoding')` is normally UTF-8. The Windows user has been warned, and he/she should be responsible for correcting the encoding before passing it to other people. Personally I have little tolerance of the non-UTF8 encoding or BOM, so I could have `stop()`ped loud instead if giving warnings, which can make these things easier, but since it seems you want to be a little bit merciful (which makes sense), I just added the fallback method and BOM detection for those who did not follow the rules.

Unless you have strong objections, let's save the energy of worrying too much, make the release, and see what happens in the real world. Maybe I'll prove wrong in a few days, or years.