Deal with UTF-16 BOM

The use of `strpos` seems inefficient to me. Please correct me if I'm wrong, but wouldn't it be more efficient to just check if the first 3 characters (or first 2 in the other conditions) matches the BOM? Rather than searching through the whole `$data` string? Not to mention I believe the current code can yield false positives if the CSV data itself contains a value that has a UTF BOM in it, as you're not strictly checking the first 3 characters of `$data`.