BOM aware file reader

Hi! 
This patch adds a BOM aware reader to stream utils. The reader correctly parses UTF BOM's and strips them away before passing the file data to liquibase. It also checks that the  BOM it finds is matching the encoding given in the changelog file. 

Context: We are using lots of custom SQL files here and some MS editors will generate UTF-16 with BOM or UTF-8 with BOM. This would then give incorrect SQL statements. With this patch, which we tried for some time on a previous version of master those issues are solved. If no BOM is present liquibase behaves exactly like before.

I added some tests to check the behavior. However, I was not able to run the full suite with changes currently happening on master. I assumed this was already known to you.

I hope this helps, feel free to ask for more information or tests if need be.