Detection for files with byte order mark (BOM)

If files begin with a BOM (U+FEFF) the AMD and CommonJS detection will fail. I noticed this when using the SystemJS builder: https://github.com/systemjs/builder/issues/25
I considered exactly that change at first. But the \uFEFF will only happen at the start of a line so it seemed to make more sense to group it with the ^.

I'm not overly stuck on either so happy to make that change if you prefer - it just seems a little bit less declarative to change the range (ie. someone has to figure what unicode character we are skipping over in that range, rather than expressing the unicode character specifically).

Let me know and I can update the PR.