Reduced risk of false positives

Reduced risk of false positives for inserting the script by making the html regex stricter, adding many more filetypes to the default exclusion list, and adjusting the html/rules tests.  Fixes shakyShane/browser-sync#198

These are the changes I've made to help reduce the risk of accidentally corrupting a non-html file:

* Increased the list of ignore types significantly.  The new list should cover just about any form of file you'd expect to see served, and then some.  It may be too aggressive, feel free to have me remove some if needed.
* Increased the robustness of the html-test regex.  The new regex requires an html-like tag to be the first non-whitespace character.  It also allows for byte order marks, although I'm not sure if that's necessary.
* I changed the order of the tests for injection.  The original test went something like:

    1. Does it have one of the rules?
        * If so, replace the content matched by the rule
    2. Is it HTML?
        * If so, assume we need to append the content
    3. Otherwise do nothing.
    
    The problem is that non-html files might contain the rule, and end up being modified, which doesn't make much sense.  The new logic is this:

    1. Is it HTML?
        * Does it have one of the rules?
            * If so, replace the content matched by the rule
        * Otherwise, assume we need to append the content
    2. Otherwise do nothing.

    This ensures that *only* content that looks like HTML will get modified.

I also rewrote the binary tests to allow for easily adding static tests of various files.  I added a few new files to test, including a random binary blob that includes `<html>` in the middle, and several JSON files with html content, to make sure they don't get modified.

I ran the new tests with and without the new HTML regex and testing order, to ensure they are able to correctly test the results.

All other tests were left unmodified, and everything is passing.